建议编写更易读的代码?

时间:2010-08-13 01:46:41

标签: c# java javascript programming-languages coding-style

您有什么提示/建议来编写更易理解的代码?

由于我最近一直在维护的一些代码缺乏结构和不良格式,我对此感到有些沮丧,并且想提出一系列编写更易理解的代码的指南。

任何建议都可能有所帮助,无论语言如何。

问候。

13 个答案:

答案 0 :(得分:9)

我喜欢这些书:

您还应该阅读代码。如果代码难以阅读,那么问问自己作者究竟做了什么或者做了什么,这使得难以理解,更重要的是,如何利用自己学到的知识自己编写更好的代码。

答案 1 :(得分:6)

我建议阅读以下内容:

答案 2 :(得分:5)

  1. 命名 - 函数,变量,类等......一个好名字对于使代码可读有很长的路要走。该名称应具有描述性和清晰性,并确保在事物的目的发生变化时更新名称。

  2. 分解复杂的功能 - 我的经验法则是,如果我不能同时在屏幕上显示整个功能/方法,那么它可能做得太多而且需要分解。

  3. 对聪明的可读性 - 通过巧妙地使用语言的晦涩功能,你会给更多人留下他们可以阅读和维护5年后的代码

  4. 我可以继续,但这是一个良好的开端。

答案 3 :(得分:4)

“如果你需要超过3级的缩进,你还是会被搞砸,并且应该修复你的程序” - Linus Torvalds

答案 4 :(得分:3)

试试这些:

  • 最小化嵌套 - 嵌套控件越少,代码读取越容易。
  • 使用临时变量 - 虽然它们可以使您的代码看起来很笨重,但有时它们也可以大大提高可读性。
  • 分解大功能 - 将大型功能分解为易于理解和测试的小型,单一责任功能。

答案 5 :(得分:3)

  1. 保持干燥 - 不要重复自己
  2. 保持方法小
  3. 随时测试 - 您的单元测试将有助于您的设计,充当文档,并使您的代码正常工作。
  4. 仔细命名方法和变量 - 经过深思熟虑的名称优于评论。

答案 6 :(得分:2)

有许多代码风格的指南和启发式方法,但确保可读性的最佳方法是有人编写代码,其他人应该阅读代码,然后批评它。

答案 7 :(得分:2)

查看Google Web Toolkit使用的Code style

非常好

答案 8 :(得分:2)

编写可维护代码的关键是遵循一些基本的代码设计原则:

  1. 单一责任原则 - SRP - 一个班级必须履行一项责任。
  2. DRY - 几乎与SRP互惠 - 不要重复自己 - 换句话说,不要让多个类实现相同的责任(因为它会导致重复相同的代码)
  3. 制作应用程序的垂直切片,并将每个切片称为模块。提出模块化结构,模块之间具有明确的依赖关系。发布项目的模块结构并强制团队遵守该模块。显然没有周期性依赖。在构建期间使用maven或apache ivy等工具进行依赖关系管理。
  4. 使用AOP,装饰等策略实现非功能性需求作为横向需求的方法。
  5. 有了这些东西,大部分代码都可以维护。上面的每一点本身都非常复杂。我非常喜欢this book

    查看讨论这些内容的博客等。 一切顺利

答案 9 :(得分:2)

由于您已经维护了一个庞大的代码库,因此拥有一个好的IDE并在所有方面实施标准格式化将有所帮助。将现有代码更改为更具可读性远不止于此。

从“重构:改进现有代码的设计 - ”一书开始 Martin Fowler,Kent Beck,John Brant,William Opdyke,Don Roberts“

答案 10 :(得分:1)

选择coding style - 任何编码风格 - 并且一直使用(与团队中的任何其他人一起)。如果你使用一致的风格,你会习惯它和develop code smells,这会让你知道错误的代码。

您可以使用许多工具自动格式化代码,如果使用IDE,则可能有一个内置的。

答案 11 :(得分:1)

有些人想到:

  • 不要将this放在方法之前,例如:

this.doSomething();

  • 请勿使用匈牙利语:

private int mCount;

  • 声明靠近使用位置的局部变量,最好尽可能晚

答案 12 :(得分:0)

似乎问题实际上是将不可读代码转换为可读代码,这与编写新的可读代码不同。

在做其他事之前:

  1. 如果尚未完成,请使用版本控制。
  2. 如果尚未完成,请使用自动化测试。
  3. 通常,客户不关心代码的可读性。客户非常关心软件是否按预期运行。

    当你最初交给不可读的软件进行维护时,你就有了软件漏洞的替罪羊。但如果您的前任修复了客户请求中的错误并且您无意中删除了修复程序(可能非常难以理解),那么客户就不会有太多耐心。