好代码像好的段子,不需要多余的解释。
如果你的代码是不解自明的,那么大多数情况下,它并不需要注释和文档。
好代码就像一部好车,轻轻松松飚到最高时速。当出了问题,任何修补机制都能将它推进车库,以很简单的工序,使用基本的工具将其修复。而烂代码就像一辆车,它声称可达200MPH,但音响只能播磁带,放置杯子的地方也满是污点。每当你尝试调整后视镜,车都多少起点火,而且必须得特定人员来,在高档流水线上,使用来自星星的工具将车再拼起来。
好代码就像一本好的教科书
- 简单易懂。
- 很精巧的分成章节,每章每节都有不同的意义。
烂代码就像写的很烂的教科书
- 章节之间互相引用,而又搞不清每一节说的是什么。
- 不停地说同样一件事,让人莫名其妙。
- 作者会提出一些规则之外的特例,常常还自相矛盾。
如果你想写好代码,那么你应当记住
- 可读性 —— 对你与所有读你代码的人。
- 可维护性 —— 保持你的代码易于修改。
- 简单 —— 不要带来不必要的复杂性。
- 高效 —— 你应让你的代码尽可能快。
- 清晰 —— 如果的你代码不解自明,那么大多数情况下并不需要注释。方法与属性的命名要说得通。把大段代码分割成小的模块。不要复制粘贴代码块。必要时要提供注释和文档,因为代码注释是源代码中唯一可以让人类直接阅读的文字,用于解释为什么某一段代码存在。
代码质量测试
- 找一个从没看过你的代码的同伙读一遍并向你解释每一模块是干什么的。你越想插嘴解释几句,你的代码可能就越烂。如果你能很安静的闭嘴坐着,而你的同伙不需要问太多问题,那么你的代码很可能不错。
好代码预兆
- 写的代码挺聪明的,但没耍小聪明。
- 算法在速度与可读性都是最优的。
- 类、变量和函数的命名都说得通,不需要多余思考。
- 一周不看这片代码后还能很快投入进入。
- 该重用的都重用了,没重用的随时可以重用。
- 方法都不长,都能单独完成一项任务。
- 当你调用一个方法时不需要进去看代码。
- 你的每个类都有一个单独的、清晰的职责(单一职责原则)。并与其它职责不同的类分离。
- 你的方法都很简短,大多在50行以下,全部在100行以下,而且从名称可以清晰看出功能。
- 当你需要回去修改项目功能时并不费劲,甚至很轻松。
- 你的try/catch代码块很小。
- 单元测试很好写。
好代码是模块化的
假设你的项目中有三层:内层,中层和外层。那么内层不应该依赖中层和外层,而中层不应该依赖外层。这样,你的内层就可以被单独测试了。
在此再次奉上Bob大叔的Clean架构。
好代码是最好的文档。 —— SteveMcConnell
|