最近有个人发 Email 问我:“好代码是怎样炼成的”。之前,我身体有点不舒服,所以我漫无边际的说了下。现在好多了,所以我想分享一下以下这些想法,因为我觉得这些对于这次重要的讨论来说是一个有趣的起点。
当时,我写道:
- 好代码并不只是可以编译而已,它还会沟通。它会和现在的你交谈,也会和以后维护代码的你交谈。它对于你的团队和任何外部来查看的人来说都是可以被理解的。
- 好代码对可靠性和可测试性的要求胜过聪明的小技巧。如果需要清晰的表明自己的意图和结果,好代码会更倾向于使用一个或多个额外的步骤来表达。
- 好代码也考虑其使用程度,一段代码一次跑一百万遍和只跑一遍的要求是不同的,就好比在树林里的一棵树和孤零零的一棵树那样。
- 好代码即使被分解了也可以成为合理的单元,而不是大规模的单一的实现。
- 好代码不仅仅是实现一次或两次,而且还要审查和重构。这才有可能让它成为***的和最健壮的实现。
- 好代码会考虑到全球化,并提供给不同文化的潜在用户。添加国际化以及相关的可访问性,这些真的是代码层面的事情,而不是嘴上说说的马后炮而已。
- 好代码不仅仅考虑今天具体运行在什么环境上,也考虑如何适应这些可能随时间变化的环境。
以上是我想到的,你对我关于这个“好代码是怎样炼成的”话题列出的清单有什么想添加、删除、修改的?期待看到你们的想法。
更新
Seivan Heidari 建议添加:好代码会在作为 API 为外面调用时,不提供内部的实现细节。
Anonymous 建议添加:好代码是浑然天成的。好代码可以照你需要的样子执行,且能被按时交付,其余的都是扯蛋哈哈。
Dave DeLong 建议添加:好代码会让读的人产生敬畏,并使读的人受到启发从而也去写自己的好代码。
Paul Cantrell 建议添加:好代码会注意权衡。它会根据工程来权衡,而不是按照绝对的教条。它也不会让工具或技术成为组内状态标记(in-group status markers)。
Rainer Brockerhoff 建议添加:好代码可以被很轻松的重用(即使是在几年之后),也能只用几行代码来进行扩展或改编。