关于代码语义的一些疑问

发布于 2022-09-12 22:32:46 字数 1245 浏览 15 评论 0

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

  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 和他凑成一对,该用什么单词替换呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那些过往 2022-09-19 22:32:47

要不试试函数式吧

回忆凄美了谁 2022-09-19 22:32:47

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文