让你最快速的改善代码编程质量的20条规范

编码规范是一种简单明了的约定,在代码细节方面,能立竿见影地改善质量,是改善代码可读性的有效手段。

关于编码规范、如何编写可读代码,很多书籍已经讲得很好了,比如著名的《代码整洁之道》以及《重构》。这里罗列出作者王争推荐的20条最好用编码规范,分为三个部分:命名与注释(Naming and Comments)代码风格(Code Style)编程技巧(Coding Tips)

命名与注释(Naming and Comments)

命名相关规范

1. 命名的关键是能准确达意。对于不同作用域的命名,我们可以适当地选择不同的长度。作用域小的变量(比如临时变量),可以适当地选择短一些的命名方式。除此之外,命名中也可以使用一些耳熟能详的缩写。

耳熟能详的单词,比如sec表示second,str表示String、num表示number等。

2. 我们可以借助类的信息来简化属性、函数的命名,利用函数的信息来简化函数参数的命名。

比如User类的一些属性,在具体命名的时候利用上下文可以省略掉User这个单词。

1
2
3
public void uploadUserAvatarImageToAliyun(String userAvatarImageUri);
//利用上下文简化为:
public void uploadUserAvatarImageToAliyun(String imageUri);
3. 命名要可读、可搜索。不要使用生僻的、不好读的英文单词来命名。除此之外,命名要符合项目的统一规范,不要用些反直觉的命名。

比如统一使用selectXXX,就不要用queryXXX,或者addXXX表示插入数据而非insertXXX

4. 接口有两种命名方式:一种是在接口中带前缀“I”;另一种是在接口的实现类中带后缀“Impl”。对于抽象类的命名,也有两种方式,一种是带上前缀“Abstract”,一种是不带前缀。这两种命名方式都可以,关键是要在项目中统一。

注释相关规范

5. 注释的目的就是让代码更容易看懂。只要符合这个要求的内容,你就可以将它写到注释里。总结一下,注释的内容主要包含这样三个方面:做什么、为什么、怎么做。对于一些复杂的类和接口,我们可能还需要写明“如何用”。
6. 注释本身有一定的维护成本,所以并非越多越好。类和函数一定要写注释,而且要写得尽可能全面、详细,而函数内部的注释要相对少一些,一般都是靠好的命名、提炼函数、解释性变量、总结性注释来提高代码可读性。

代码风格(Code Style)

7. 函数、类多大才合适?函数的代码行数不要超过一屏幕的大小,比如 50 行。类的大小限制比较难确定。
8. 一行代码多长最合适?最好不要超过 IDE 显示的宽度。当然,限制也不能太小,太小会导致很多稍微长点的语句被折成两行,也会影响到代码的整洁,不利于阅读。
9. 善用空行分割单元块对于比较长的函数,为了让逻辑更加清晰,可以使用空行来分割各个代码块。在类内部,成员变量与函数之间、静态成员变量与普通成员变量之间、函数之间,甚至成员变量之间,都可以通过添加空行的方式,让不同模块的代码之间的界限更加明确。
10. 四格缩进还是两格缩进?我个人比较推荐使用两格缩进,这样可以节省空间,特别是在代码嵌套层次比较深的情况下。除此之外,值得强调的是,不管是用两格缩进还是四格缩进,一定不要用 tab 键缩进。

如果你使用IDEA的话,是可以使用tab键作为空格的快捷方式的,但是记住,这仅仅是快捷方式而已,实际上你按tab键,打出的仍然是空格。具体的设置如下:

image-20220613194611465

11. 大括号是否要另起一行?我个人还是比较推荐将大括号放到跟上一条语句同一行的风格,这样可以节省代码行数。但是,将大括号另起一行,也有它的优势,那就是,左右括号可以垂直对齐,哪些代码属于哪一个代码块,更加一目了然。
12. 类中成员的排列顺序在 Google Java 编程规范中,依赖类按照字母序从小到大排列。类中先写成员变量后写函数。成员变量之间或函数之间,先写静态成员变量或函数,后写普通变量或函数,并且按照作用域大小依次排列。

编程技巧(Coding Tips)

13. 将复杂的逻辑提炼拆分成函数和类。
14. 通过拆分成多个函数或将参数封装为对象的方式,来处理参数过多的情况。

比如说,大于等于5个的时候,通过单一职责的原则拆分函数,或者将参数封装为对象。

15. 函数中不要使用参数来做代码执行逻辑的控制。函数设计要职责单一。
16. 移除过深的嵌套层次,方法包括:去掉多余的 if 或 else 语句,使用 continue、break、return 关键字提前退出嵌套,调整执行顺序来减少嵌套,将部分嵌套逻辑抽象成函数。
17. 用字面常量取代魔法数。
18. 用解释性变量来解释复杂表达式,以此提高代码可读性。
updatedupdated2023-06-032023-06-03
加载评论