注意:下面这个清单里描述的事情并不是你绝对不能做的,它只是用量化的方法来让你知道编程上的这些做法将会产生的负面代价。
这些费用是在代码审查时你将要付出的。
不遵守编码风格
费用: $0.02
代码库中的程序编码风格一致虽然不是很重要,但值得你去遵守。
在提交代码的说明信息上偷懒
费用: $0.50
这主要是为了以后的查找。请细读这篇代码提交说明信息指导(英文)。
使用局部变量
费用: $1.00
大多数的局部变量都最好使用方法代替。注意:代码块参数除外。
多于一行的方法
费用: $1.50
对多于一行代码的方法要保持高度警惕。
超过5行的方法
费用: $3.00
一个方法应该只做一个事情。一个事情应该用不了5行代码就能完成。
很长的类
费用: $5.00
根据童子军(Boy Scout)法则:同性恋应该被禁止。哦,不,是另外一条:尽量只留下你会用到的代码。当你遇到一个比较长的类时,花点功夫精简它们。
使用魔幻数字
费用: $7.00
在代码中你只可以使用两个数字:0和1。其它的都应该用具有名字的常量代替。
在条件判断中使用`||` 或 `&&`
费用: $7.00
当你发现有 `if foo && bar` 时,把它提取到一个方法里,用来说明`foo && bar` 究竟是什么意思。
使用 case 或 switch 语句
费用: $15
一个swith语句基本上不是只做一个事情。它通常还会牵涉到其它类。
传递布尔参数
费用: $15
依赖布尔参数的程序流转叫做控制耦合,这是一种完全不应该的高耦合。
类名用Manager结尾
费用: $30
“Manager”是一个很含糊的词,传达不了任何意思。使用它,很有可能你的类承担了过多的责任。
过度使用附加支持
费用: $10/object created
尽量简化你测试时需要的附加支持工具。如果能用临时对象代替,就避免使用数据库。
测试中屏蔽某些功能
费用: $10/屏蔽的方法
如果你在测试Foo类,你就不应该屏蔽或短路Foo中的任何方法。你越想这样做,越说明你需要从Foo中把这些功能提炼出来放到其它地方。
在数据库中观察集成测试效果
费用: $20
集成测试应该通过UI来验证。不要去窥探数据库。
注释
费用: $200/行
一千个注释中顶多只有一条有合理存在的理由。其它的你应该改进代码,直到不需要注释。
注释中包含 TODO 或 FIXME
费用: $500/行
我不在意代码分支中存在不多的TODO注释,但绝对不要把它们合并的代码库中。“FIXME”实际上是“fuck you”你的同事。
无意义的命名
费用: $50/代码审查者的疑惑
一定要努力努力好好给代码命名。当系统有变化时及时修改、改进你的命名。当发现有更好的名称时,不要等待,立即换掉。
静态方法或类方法
费用: $50/个
Ruby里的类方法具有可变全局状态。想办法重构它们。
不必要的属性状态变化
费用: $100/变化
与其修改一个现有的记录,不如创建一个新的,或return一个。与其删除,不如做标记。Rich Hickey 对此有一些你值得一读的思考。
一个类有多个职责
费用: $200/额外职责
一个类应该只有一个职责或目的。几乎没有人因为使得类太小而出错。鉴于此,你的类很可能太大。
重复的代码
费用: $500
编程中几乎没有任何原则你必须遵守的,但避免代码重复是个例外。代码复制给维护造成困难,严重影响代码质量。
重复的测试代码
费用: $500
测试代码并不是产品代码的次要附属物。它们的质量同等重要。更严重的:维护一个糟糕的测试套件代码可能会让你欲哭无泪。
未经测试的代码
费用: $1,000/行
未经测试的代码自诞生之时起就成了负担。这样做很不专业。
感谢Paul Graham先生的“On Lisp”,本文是受他的在某些函数上收税的想法而启发。
相关推荐
"小学数学六年级期末供题考试命题双向细目表.pdf" 本资源为小学数学六年级期末供题考试命题双向细目表,涵盖了小学数学六年级的各种知识点。本文将对该资源进行详细的解读和知识点总结。 一、数的认识 在小学数学...
01.-小学英语命题双向细目表(一年级期末).pdf
评茶员五级理论知识鉴定要素细目表.pdf
命题双向细目表.doc
然而,根据文件的标题和描述,我们可以推测文档可能与“教学目标双向细目表”相关,而双向细目表是教育领域中用于详细规划教学内容和目标的重要工具。 在教育领域,教学目标双向细目表通常用来清晰地表达教学活动中...
为达到这一目标,本次期末试卷的双向细目表设计得格外精细,旨在全面覆盖数学学科的关键知识点,同时深入考查学生的综合能力。 试卷涵盖了数学、空间与图形、数学活动与思考等多个领域,总题量为28道,既保证了覆盖...
本文档“小学语文双向细目表o.pdf”便是对小学三年级第二学期期末测试卷的具体命题要求、评分标准及考核知识点的细化和梳理,它为教师的出题和评分提供了明确的指导,同时也帮助学生和家长清晰地了解考核内容和要求...
"七年级数学下册期末试卷及答案含细目表3精选.doc" 本资源是七年级数学下册期末试卷,包含选择题、填空题和解答题三部分,涵盖了初一数学的各个知识点。以下是对试卷中每个知识点的详细解释: 选择题部分: 1. 本...
小学数学毕业考试命题双向细目表.pdf 本文将对小学数学毕业考试命题双向细目表.pdf中的知识点进行详细的解释和阐述。 小学数学毕业考试命题设计 小学数学毕业考试命题设计是小学数学教学的重要组成部分。其目的是...
【勾股定理单元测验双向细目表】 在数学教育中,单元测验是评估学生对特定主题理解程度的重要工具。"勾股定理单元测验双向细目表"是一个精心设计的教学评估方案,旨在全面检测学生对勾股定理的理解与应用能力。这个...
【2017年广东省中考英语双向细目表】反映了广东省中考英语考试的全面要求,旨在测试学生在听、说、读、写四个方面的技能。这份细目表详细列出了考试的各项内容,包括听力理解、单项选择、完形填空、阅读理解、短文...
这份文档是针对七年级下学期数学课程的一份期末考试试卷,包含了完整的试题和答案,旨在帮助学生复习和评估他们在整个学期的学习成果。试卷结构清晰,包括了选择题、填空题和解答题三大板块,涵盖了多个数学知识点。...
"三年级分数的初步认识双向细目表.doc" 本文档是关于三年级分数的初步认识双向细目表的教学资源,主要面向中小学教学和教育领域。该资源是一个详细的教学大纲,旨在帮助教师和学生更好地理解三年级分数的基本概念和...
这份文档是针对小学二年级上学期数学教学的一个命题双向细目表,主要目的是评估和测试学生在数学基础知识和技能上的掌握程度。以下是根据表格内容整理的知识点: 1. **计算能力**:表格中包含了大量关于100以内加...
这份四年级小学数学下册双向细目表详细列出了该学期末考试的命题结构和知识点分布,旨在确保学生对所学内容进行全面而深入的理解。以下是根据表格内容解析的知识点: 1. **四则运算** - 口算:这部分主要考察学生...
这份"(完整版)六年级语文期末试卷双向细目表.pdf"是针对六年级学生的语文期末考试设计的,旨在全面评估学生在基础知识、积累领悟、名著阅读以及习作表达四个主要方面的语文素养。以下是各部分的详细说明: 1. **...
"2019年部编人教版小学数学1-12册知识点双向细目表.pdf" 本资源摘要信息是基于2019年部编人教版小学数学1-12册知识点双向细目表.pdf文件,旨在帮助学生和教师快速了解小学数学的知识点。 第一册 1. 数一数:认识1...
八年级语文下册第五单元试卷及答案含双项细目表.doc
高三文科数学联考命题双向细目表是针对高三文科学生进行数学复习的重要参考资料,它详尽列出了考试可能涉及的各项知识点和对应的能力要求,旨在帮助考生系统性地掌握高中数学的核心内容并提升解题能力。以下是对表格...
- 双向细目表是教学评估工具,用于清晰地展示考试中各个能力层次(识记、理解和应用)与具体知识点的对应关系,以确保全面评估学生的学习情况。 以上是高一年级化学期中考试所涵盖的知识点,包括基本理论、化学...