编写易读代码,炫技不可取,不费力能看懂最佳

编写易读代码

态度

  1. 软件构建的核心就是管理复杂度
  2. 代码不仅写给自己看的

代码自解释

  1. 不要缩写
  2. 宁可名字很长,也要有意义
  3. 接口命名也需要自解释
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//错误
var n int
var nerr int
var n_comp_conns int
//正确
var errorNums int

//错误
func Get(id int64) resp
func List() []resp

//正确
func GetById(id int64)
func ListAllAlbums() []resp

命名

  1. 类型名或者变量名为名词
  2. 函数名一般为动词
  3. 形容词做限定
  4. 不允许拼音
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
var errorNums int //名词
var viewHistory []History //名词
var albumCollections []Album //名词
var FileOpener *file
func GetById(id int64) //动词
func ListAllAlbums() []resp //动词
func UpdateRecordByEntity(album *Album) (bool, error) //动词
func UpdateColumnsById(id int64, args interface{}) (bool, error) //动词
minNum //限定
maxNum
totalNum
firstPerson
lastUsedPieceOfPaper

命名规约

  1. 驼峰式命名:num_error -> errorNums
  2. 常量 ->首字母大写 驼峰式命名(Go):MaxSize
  3. 常量: 大写+下划线:MAX_SIZE
  4. 函数名:Get***/List**/Update***/Delete**/Create**
  5. 代码中不可出现数字常量&字符串常量

注释

  1. 复杂逻辑注释
  2. 函数注释,说明函数是做什么的
  3. 站在代码读者角度进行注释:what?why?
  4. 函数内部逻辑很复杂,可以输入输出的例子来说明

控制流

控制流最好不要超过三层(if、else)

语法糖

array.map(*3.14).filter(>1.00).reduce(+)

少用

代码拆分->单一原则

  1. 一个函数只处理一个事情:函数解耦->模块解耦->服务解耦->结构解耦
  2. 数字体现:单个函数最好不超过45行,尽量控制
  3. 函数复用:没有重复代码。
  4. 单个代码文件不能超过3000行

单元测试

  1. ⽂件名:albumService_test.go, albumServiceTest.java
  2. ⽅法名:testCreateAlbum, testUpdateAlbumById • ⽅法名和需要测试⽅法名保持⼀致 • 允许中⽂(考虑测试覆盖率的话,测试case⽐较多): • testCreateAlbum_插⼊影集 • testCreateAlbum_插⼊视频 • testCreateAlbum_重复插⼊ • testCreateAlbum_参数错误

炫技不可取,不费力能看懂最好