主页

索引

模块索引

搜索页面

改善代码质量的编程规范

命名

  1. 取一个特别合适的名字是一件非常有挑战的事情:

    即便是对母语是英语的程序员来说,也是如此
    
  2. 对于影响范围比较大的命名:

    比如包名、接口、类名,我们一定要反复斟酌、推敲。
    实在想不到好名字的时候,可以去 GitHub 上用相关的关键词联想搜索一下
    

经验:

1. 命名多长:
    一个原则就是以能准确达意为目标
    命名的时候,要换位思考,假设自己不熟悉这块代码,从代码阅读者的角度去考量命名是否足够直观
2. 利用上下文简化命名
    函数参数也可以借助函数这个上下文来简化命名
3. 命名要可读、可搜索
    可读:
      不可读不方便沟通: plateaux, panacea
      可读不知其意也没事: inkstone
    可搜索:
      方便使用 IDE 自动联想功能
      统一规约是很重要:
        大家都用 selectXXX 表示查询,你就不要用 queryXXX
        大家都用 insertXXX 表示插入,你就不要用 addXXX
4. 类型命名
    如接口的命名:
      a. 接口加前缀 “I”,如 IUserService,对应的实现类命名为 UserService
      b. 接口不加前缀,如 UserService,对应的实现类加后缀 Impl,如 UserServiceImpl
    字串命令:
      加前缀 str

注释

  • 注释的目的就是让代码更容易看懂

  • 注释本身有一定的维护成本,所以并非越多越好

代码风格

  1. 函数、类多大才合适:

    函数的代码行数不要超过一屏幕的大小,比如 50 行
    类的大小限制比较难确定
    
  2. 一行代码多长最合适:

    最好不要超过 IDE 显示的宽度
    
  3. 善用空行分割单元块

    对于比较长的函数,为了让逻辑更加清晰,可以使用空行来分割各个代码块。 在类内部,成员变量与函数之间、静态成员变量与普通成员变量之间、函数之间, 甚至成员变量之间,都可以通过添加空行的方式,让不同模块的代码之间的界限更加明确

编码技巧

  1. 将复杂的逻辑提炼拆分成函数和类

  2. 通过拆分成多个函数或将参数封装为对象的方式,来处理参数过多的情况

  3. 函数中不要使用参数来做代码执行逻辑的控制

  4. 函数设计要职责单一

  5. 移除过深的嵌套层次,方法包括:

    去掉多余的 if 或 else 语句,
    使用 continue、break、return 关键字提前退出嵌套,
    调整执行顺序来减少嵌套,将部分嵌套逻辑抽象成函数
    
  6. 用字面常量取代魔法数

  7. 用解释性变量来解释复杂表达式,以此提高代码可读性

主页

索引

模块索引

搜索页面