关于代码语义的一些疑问

一般而言我希望代码尽可能贴近人类正常的语义,最近碰到两个疑问

  1. 类和对象的取舍
    比如做一个游戏吧,那肯定有很多小兵,就需要写一个小兵类;可能还需要些一个精英怪类;但是最终BOSS只有一个,按照编码的惯性(和强迫症),就很想也写一个BOSS类,但实际上这并没有必要。有人说你把它写成单例不就好了,但我还是认为很怪。
  2. 方法的使用和内部逻辑矛盾

    function process(data) { /*...*/ }
    const obj = {
        data: { /*...*/ }
        get: name => process(obj.data[name]),
        get_raw: data => process(data)
    }

    注意到 getget_raw 都返回一个处理过的数据。但是这个 process 函数它并不存在,我也不想让它存在。它只是我为了描述一个处理过程。也就是说现在 getget_raw 后面都拖了一串链式调用。比如

    function process(data) { /*...*/ }
    const obj = {
        data: { /*...*/ }
        get: name => obj.data[name].f().g(),
        get_raw: data => data.f().g()
    }

    这个时候很自然地,我就会在 get 那里复用 get_raw 的代码。

    function process(data) { /*...*/ }
    const obj = {
        data: { /*...*/ }
        get: name => obj.get_raw(obj.data[name]),
        get_raw: data => process(data).f().g()
    }

    这样在我看来就很怪了。明明 get_raw 是后加入的,名字还比 get 长,也暗示着它是一个不常用的方法;然而常用的 get 方法却依赖于它运行。

  3. 取名

    写了 getXxx 之后发现没有 setXxx 和他凑成一对,该用什么单词替换呢?

阅读 1.4k
2 个回答

要不试试函数式吧

不希望process存在 可能是你函数名没取好(process这个名字完全没意义啊) 试试换个更通用且能体现其用途的名字 看起来你的get和get_row都是从某个地方提取数据的样子 process换成体现他根据某种方式提取数据的名字试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题