03 go语言入门(01)| 青训营笔记
编码规范
编码规范是一套约定俗成的规则,用于统一代码风格,提高代码的可读性和维护性。 可以从以下几方面约束造山行为:
- 命名规范
- 代码风格
- 注释规范
- 控制流程
- 使用go语言提供的工具
- ...
1. 代码格式
- 使用
gofmt自动格式化代码Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格
- 使用
goimports也是官方提供的工具,等于
gofmt+依赖包管理 可以自动增删包引用,按照字母排序分类
2. 命名规范
- 变量
- 变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写
- 缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写
- 例如使用ServeHTTP而不是ServeHttp
- 使用XMLHTTPRequest或者xmlHTTPRequest
- 若变量类型为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头
- 全局变量在名字中需要更多的上下文信息,以便远距离调用时轻易辨别含义
- 常量
- 均使用大写并且使用下划线
_分词const HTTP_STATUS_OK = 200const APP_VER = "1.0"
3. 注释规范
- 注释应该解释代码作用
- 注释应该解释代码是如何做的
- 应该解释代码实现的原因
- 解释代码什么情况会出错
- 典中典之我最讨厌两件事,写代码不写注释和写注释(
go语言自带的
godoc可以生成注释
- go语言提供
/* */的块注释和//单行注释 - 单行注释一般不超过120字符,并且提倡全部使用单行注释
- 对于中英文字符之间严格使用空格分隔,包括
,后面
// WriteString writes the contents of the string s to w, which accepts a slice of bytes.
// If w implements StringWriter, its WriteString method is invoked directly.
// Otherwise, w.Write is called exactly once.
func WriteString(w Writer, s string) (n int, err error) {
if sw, ok := w.(StringWriter); ok {
return sw.WriteString(s)
}
return w.Write([]byte(s))
}
4. 控制流程
- 所有的运算符和操作数之间要留空格
- 保持正常代码路径为最小缩进
//good
if a > 0 {
}
//bad
if a>0 // a ,0 和 > 之间应该空格
{ // 左大括号不可以换行,会报语法错误
}
- 减少嵌套,优先处理错误/特殊情况,尽早
return
if err != nil {
// error handling
return
}
// normal
- 测试
- 单元测试文件名命名规范为 example_test.go 测试用例的函数名称必须以 Test 开头
//所有测试文件以 _test.go 结尾
//func TestXxx(*testing.T)
//初始化逻放到 TestMain 中
func HelloTom() string{
return "Jerry"
}
func TestHelloTom(t *testing.T){
fmt.Println(HelloTom())
}