【问题标题】:Definition of 'clean code' [closed]“干净代码”的定义[关闭]
【发布时间】:2009-06-05 06:59:20
【问题描述】:

Robert C. Martin 在他的书“Clean Code”的第一章中提供了不同知名软件专家对“干净代码”的几个定义。如何定义干净的代码?

【问题讨论】:

    标签: coding-style definition


    【解决方案1】:
    • 简单易懂。
    • 易于修改。
    • 易于测试。
    • 工作正常(Kent Beck 的建议 - 非常正确)。

    这些对我来说很重要。

    【讨论】:

    • 它应该也能正常工作。否则,这对我来说似乎是一个很好的定义。
    • 好点,我将其添加到答案中。
    【解决方案2】:

    我不怕修改代码。

    【讨论】:

      【解决方案3】:

      无需任何 cmets 即可轻松理解的代码。

      【讨论】:

      • 我会说最少使用 cmets,而不是根本不使用:(1)有一个违反直觉的算法并非不可能;注释可用于让用户了解 (2) cmets 可用于将代码分解为逻辑部分,以便读者立即获得概览。
      • 感谢您的评论。至于用 cmets 将代码分解为逻辑部分,我强烈反对。如果您觉得需要分解代码,请使用名称正确的方法。至于违反直觉的算法,如果您执行上述操作,我怀疑您需要 cmets 来描述正在发生的事情。如果您仍然需要,记录您的解决方案可能比在代码中添加一些 cmets 更有帮助。
      • 我同意代码不需要任何 cmets 来明确“它的作用”。但是当谈到“为什么这样做”时,措辞得当的 cmets 可能很有用——甚至是必要的。
      • @keremispirli:不要误会我的意思。当某些事情不是不言自明时,我会在源代码中编写 cmets。问题是,你如何定义干净的代码?我认为如果您需要 cmets 来弄清楚为什么您的代码是这样编写的,那么仍然有改进的余地。那么问题就变成了,这样做值得吗?很多时候,这个问题的回答都是否定的,因为它不会为用户增加价值,也没有提高可维护性以证明努力是合理的。
      【解决方案4】:

      读起来尽可能接近人类语言的代码。我的意思是在所有层面上:从使用的语法、命名约定和对齐一直到使用的算法、cmets 的质量和模块之间代码分布的复杂性。

      命名约定的最简单示例:

      if (filename.contains("blah"))
      

      if (S_OK == strFN.find(0, "blah"))
      

      部分取决于使用的环境/API,但大部分当然是开发者的责任

      【讨论】:

        【解决方案5】:

        无点 Haskell 代码。 (虽然不是。)

        【讨论】:

          【解决方案6】:

          不同模块或类明确定义契约的代码是一个好的开始。

          【讨论】:

            【解决方案7】:

            当您进行一次看似微不足道的更改时,代码不会在多个地方中断。也很容易遵循程序的控制路径。

            【讨论】:

              【解决方案8】:

              可重用的代码也很重要。所以不仅代码的质量很重要,而且你放在哪里。 例如,将业务逻辑放入 Controller 是无用的代码

              【讨论】:

                猜你喜欢
                • 2013-12-27
                • 2016-09-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-04-06
                • 1970-01-01
                • 2021-06-10
                相关资源
                最近更新 更多