1.2.3 编码规范-命名规范
- variable
简洁胜于冗长
缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写
例如使用ServeHTTP而不是ServeHttp
使用XML .HT TPRequest或者xmlHT TPRequest
变量距离其被使用的地方越远,则需要携带越多的上下文信息
全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义
i和index的作用域范围仅限于for循环内部时
index的额外冗长几乎没有增加对于程序的理解
将deadline替换成t降低了变量名的信息量
t常代指任意时间
deadline指截止时间,有特定的含义
- function
函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的
函数名尽量简短
当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义
当名为foo的包某个函数返回类型T时(T 并不是Foo),可以在函数名中加入类型信息
●package
只由小写字母组成。不包含大写字母和下划线等字符
简短并包含一定的上下文信息。例如schema、task 等
不要与标准库同名。例如不要使用sync或者strings
*以下规则尽量满足,以标准库包名为例
不使用常用变量名作为包名。例如使用bufio而不是buf
使用单数而不是复数。例如使用encoding而不是encodings
谨慎地使用缩写。例如使用fmt在不破坏上下文的情况下比format更加简短
小结 核心目标是降低阅读理解代码的成本; 重点考虑上下文信息,设计简洁清晰的名称
1.2.4编码规范-控制流程 避免嵌套,保持正常流程清晰
尽量保持正常代码路径为最小缩进
优先处理错误情况/特殊情况,尽早返回或继续循环来减少嵌套
1.2.5 错误和异常处理 简单错误——简单的错误指的是仅出现一次的错误, 且在其他地方不需要捕获该错误
优先使用errors.New来创建匿名变量来直接表示简单错误
如果有格式化的需求,使用fmt.Errorf