最终,代码会(最终)编译成CPU的指令。然而,代码(以我的拙见)是为了让人类阅读,更新和互动。这引出了以下观察:
其他工程师无法读取的代码即使功能正常,也是错误的代码。
考虑到这一点,这个程序员可以做些什么来让人们更容易阅读代码?
命名约定? (乔尔有相当多的发言权)
代码结构/布局? (请为了上帝的爱,不要进入{
安置辩论)
措词? (是否可以编写看起来更像英语的代码)
Joel's以外是否有好的文章。
答案 0 :(得分:57)
是
如果计算机没有运行它,它就会坏掉。如果人们无法阅读它,它将被打破。很快。
答案 1 :(得分:45)
“任何傻瓜都可以编写代码 电脑可以理解。好 程序员编写人类可以编写的代码 理解。“ - Martin Fowler,”重构:改进现有代码的设计“
但既然你已经自己得出了这个结论,那么就足以说这是一个很大的话题。这不是你能得到一个单一答案的东西。使代码可维护不仅限于编码风格,还涉及您的整体设计和构建过程。这是网站上的一些标签,几乎所有的问题和答案都会影响到这个主题:
答案 2 :(得分:27)
应该为人们编写程序 阅读,只是偶然的 要执行的机器。
- 来自Abelson和Sussman的“计算机程序的结构和解释”
答案 3 :(得分:12)
编译器不关心你的代码是干净的还是不可读的 - 只要语法正确,代码就会编译并运行。
然而,在维护代码时,为人们编写干净的代码将非常有用。从商业案例的角度来看,理解新程序员代码所需的时间越短,使新人加快速度所需的资金就越少。因此,更清洁的代码更有价值。当程序员需要100%的时间来理解时,不可读代码的执行速度提高5%是什么意思?毕竟,程序员花了不少钱。
按照样式,变量命名等编码标准编写代码对于保持多人编写的代码一致非常重要。 遵循良好编码标准的一致代码库将更易于维护。
通常,在优化代码时,它可能变成一个难以理解的混乱,但通常,编译器现在在优化方面变得更好,因此编写更清晰的代码也将提高编译器捕获某些构造的机会并对其进行优化,从而提高性能。
为人而不是机器写。
答案 4 :(得分:5)
Roedy Green写了一篇名为Unmaintainable Code的广泛指南。
“考虑到这一点,这可以做什么 程序员可以更轻松地编写代码 人类阅读?“
答案:阅读本指南,并将其所说的内容反过来应用于您的开发活动。
引用一般原则部分:
“为了维护程序员, 你必须了解他的想法。 他有你的巨型计划。他没有 时间阅读全部,更不用说了 明白它。他想快点 找到改变的地方, 让它出去,没有 意外的副作用来自 更改。
他通过厕所查看您的代码 纸管。他只能看到一个小小的 你的程序一次一块。您 我想确保他永远无法进入 这样做的大局。您 我想尽可能地努力 让他找到他正在寻找的代码 对于。但更重要的是,你想要的 使它尽可能尴尬 他安全地忽略了什么。
程序员陷入困境 公约自满。每一个 偶尔,巧妙地违反 惯例,你强迫他读 你的代码的每一行都有一个 放大镜。
你可能会认识到每一个 语言功能使代码 不可维护 - 不是这样,只有 被误用了。“
虽然它是一个坚定的舌头,但它实际上是一个非常有用的列表(除了令人讨厌的广告),如果你真的关心编写可读/可维护的代码,应该避免什么。
答案 5 :(得分:4)
<sarcasm>
代码只能由机器读取。只要最终结果满足用户的需求,代码的样子并不重要。</sarcasm>
现在可维护的代码或代码可以改变,这是一个完全不同的故事。
你会建造一个房子,在餐巾背面乱涂乱画,或者在你建造房屋之后丢掉蓝图,你可能想在一天内增加房间吗?
答案 6 :(得分:4)
我对它的看法有点切 - 这不是关于可读性,而是关于可维护性。
阅读只是看代码并认为你可以阅读它。通常认为,为了便于阅读,它必须对那些不付费理解它的人来说是可读的。
维护正在进行更改以修复错误或实施新的/更改的要求。阅读只是这个过程的一部分。我不知道任何可维护的代码不需要维护者的学习曲线,并且对于没有攀登该曲线的人来说代码看起来“不可读”。
与此同时,我认为程序员有责任教导维护者帮助他们攀登学习曲线。一种方法是逐步指导如何执行可预期的未来变化。
我经常看到用空格填充的代码,因此它更少适合屏幕,并且给出了详细的命名和gabby注释。这为展示提供了可读性。
答案 7 :(得分:3)
我建议罗伯特·马丁看看Clean Code。这是一个很好的指南,指导如何使代码更易读,更干净。
答案 8 :(得分:2)
请勿在类型安全语言中使用hungarian notation。
答案 9 :(得分:1)
缺少项目:评论。
即使代码对作者来说完全易读,也可能不适合所有人。
答案 10 :(得分:1)
我对此的看法是,一切都是相对的。
当您需要更改代码时,代码适合您,当它为机器执行时。
如果代码有效,则有可能被阅读。
在你身上的人和合作者应该让它易于被其他人阅读,但最终,除了惯例之外,代码的可读性有时可能在旁观者眼中。
人们更容易阅读代码,更容易更改和维护代码,因为进化受益于您应用于问题的贡献/贡献者的数量,这种类型的代码可以被声明为比不可读的代码更好
但最终,代码将被制作成机器的一组指令。
人类意图转化为机器可以遵循的东西,因此代码同时适用于两者。