行长度

一行代码不要超过120列,超过的情况,使用合理的方法换行。

例外场景:

  • import 模块语句
  • struct tag
  • 工具生成的代码

换行方式

采用惰性换行,换行前应尽可能占满当前行不留空位。

// Bad
fmt.Printf("%v %v %v %v %v %v %v %v %v %v %v %v %v %v\n",
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,89, 144, 233)

// Good
fmt.Printf("%v %v %v %v %v %v %v %v %v %v %v %v %v %v\n", 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
89, 144, 233)

不必要的空行

  • 函数体第一行不要换行。
// Bad
func foo() {

    // func body
}

// Good
func foo() {
    // func body
}
  • 函数调用和对调用结果的处理,是紧密相连的,不能加空行。
// Bad
res, err := foo()

if err != nil || res.Ret != 0 {
    return
}

// Good
res, err := foo()
if err != nil || res.Ret != 0 {
    return
}
  • return 语句前不要换行。
// Bad
func foo() {
    // func body

    return
}

// Good
func foo() {
    // func body
    return
}

括号和空格

  • 遵循 gofmt 的逻辑。
  • 运算符和操作数之间要留空格。
  • 作为输入参数或者数组下标时,运算符和操作数之间不需要空格,紧凑展示。
var i int = 1 + 2                     // 运算符和操作数之间要留空格
v := []float64{1.0, 2.0, 3.0}[i-i]  // i-i 作为下标不留空格
fmt.Printf("%f\n", v+1)                // v+1 作为入参不要留空格
  • 不要添加没必要的括号。
// Bad
if foo && (int(bar) > 0) {
    // ...
}

// Good
if foo && int(bar) > 0 {
    // ...
}

行数

  • 函数长度不能超过 80 行。
  • 文件长度不能超过 800 行。
powered by Gitbook该文章修订时间: 2024-03-22 15:30:00

results matching ""

    No results matching ""