03 go语言入门(01)| 青训营笔记

96 阅读2分钟

03 go语言入门(01)| 青训营笔记

编码规范

编码规范是一套约定俗成的规则,用于统一代码风格,提高代码的可读性和维护性。 可以从以下几方面约束造山行为:

  • 命名规范
  • 代码风格
  • 注释规范
  • 控制流程
  • 使用go语言提供的工具
  • ...

1. 代码格式

  1. 使用gofmt自动格式化代码

    Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格

  2. 使用goimports

    也是官方提供的工具,等于gofmt+依赖包管理 可以自动增删包引用,按照字母排序分类

2. 命名规范

  1. 变量
  • 变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写
  • 缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写
    • 例如使用ServeHTTP而不是ServeHttp
    • 使用XMLHTTPRequest或者xmlHTTPRequest
  • 若变量类型为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头
  • 全局变量在名字中需要更多的上下文信息,以便远距离调用时轻易辨别含义
  1. 常量
  • 均使用大写并且使用下划线_分词
    • const HTTP_STATUS_OK = 200
    • const 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())
}