认知
明确作为一名 Code Reviewer 的职责
一个代码评审者的主要工作,不是批准或者拒绝提交的代码,而是提出合理的建议,帮助代码提交者规避这些失误或者错误,编写出更优秀的代码。
使用最直观的编码方式
坚持使用最直观的编码方式,而不是追求代码简短,可以避免很多不必要的错误。减少错误、节省时间,是我们现在选择编码方式的一个最基本的原则。
比如在使用条件语句 if
和使用条件运算符 ?:
时,不要纠结用哪个更好,也不要追求简短使用条件运算符,当其中的逻辑比较复杂时,可读性就比较差了。
“好”代码与“坏”代码
“好”代码与“坏”代码并没有统一的衡量标准,但有一些经验值得我们学习借鉴:
“好”的代码应该:
- 容易理解;
- 没有明显的安全问题;
- 能够满足最关键的需求;
- 有充分的注释;
- 使用规范的命名;
- 经过充分的测试。
“坏”的代码包括:
- 难以阅读的代码;
- 浪费大量计算机资源的代码;
- 代码风格混乱的代码;
- 复杂的、不直观的代码;
- 没有经过适当测试的代码。
优秀的代码是“经济”的代码
优秀的代码应该是投入少、收益大、投资回报高。
“经济”的代码行为:
- 代码写得又快又好;
- 代码跑得又快又好;
- 代码写得精简易懂。
“不经济”的代码行为:
- 代码写得快但错误多;
- 代码跑得快但安全问题多;
- 代码写得精简但没人看得懂。
好的代码服务于整个软件生命周期
写代码时应该跳出开发视角,从整个软件的目标思考,能服务于软件目标,适合软件目标的,对于整个软件生命周期都是经济的才是好的代码,而不是说代码中用了某个高深的技巧或技术就是好代码。
优秀程序员的六个关键特质
- 掌握一门编程语言;
- 解决现实的问题。程序员的存在不是为了写代码,而是为了解决现实问题,实现现实价值;
- 发现关键的问题;
- 沉静的前行者。完美是不存在的,所以我们才追求完美,对完美的过分追求,可能是一个代价高昂,收获甚小的行为;
- 可以依赖的伙伴。能够在团队中快速学习、成长,变得越来越优秀,也能够帮助其他团队成员变得越来越优秀;
- 时间管理者。要坚持做需要做的事情。不需要的、不紧急的、价值不大的,我们可以暂时搁置起来。一个人,能做的事情是有限的,能把最重要的事情最好,就已经很了不起了。
规范
什么是编码规范?
编码规范指的是针对特定编程语言约定的一系列规则,通常包括文件组织、缩进、注释、声明、语句、空格、命名约定、编程实践、编程原则和最佳实践等。一般而言,一份高质量的编码规范,是严格的、清晰的、简单的,也是权威的。
为什么需要编码规范?
编码规范可以帮我们选择编码风格、确定编码方法,以便更好地进行编码实践。 简单地说,一旦学会了编码规范,并且严格地遵守它们,可以让我们的工作更简单,更轻松,少犯错误。这个问题弄明白了,我们就能愉快地遵守这些约定,改进我们的编程方式了。
- 规范的代码,可以降低代码出错的几率。复杂是代码质量的敌人。 越复杂的代码,越容易出现问题,并且由于复杂性,我们很难发现这些隐藏的问题。
- 规范的代码,可以提高编码的效率。
- 规范的代码,降低软件维护成本。
- 编码规范越使用越高效。
如何给代码起好名字?
为什么需要一个好名字
名字要准确地代表它背后的东西,并且还能让代码干净漂亮。不然,我们的思路就会受到干扰,影响我们的思考和心情。
名字就是沟通的方式,错误的命名很难让我们清楚地理解代码真实的意图。所以,混淆的命名很难让我们阅读和理解代码。
为什么需要命名规范?
- 为标识符提供附加的信息,赋予标识符现实意义。帮助我们理顺编码的逻辑,减少阅读和理解代码的工作量;
- 使代码审核变得更有效率,专注于更重要的问题,而不是争论语法和命名规范这类小细节,提高开发效率;
- 提高代码的清晰度、可读性以及美观程度;
- 避免不同产品之间的命名冲突。
常见的命名方法
- 驼峰命名法(CamelCase);
- 蛇形命名法(snake_case);
- 串式命名法(kebab-case);
- 匈牙利命名法。标识符由一个或者多个小写字母开始,这些字母用来标识标识