摆烂新人写笔记Day03——代码规范

86 阅读3分钟

论什么是高质量编程

  • 各种边界条件是否考虑完备
  • 异常情况处理,稳定性保证
  • 易读易维护

编码原则

实际应用场景千变万化,各种语言的特性和语法各不相同。 但是高质量编程遵循的原则是相通的

简单性

  • 消除"多余的复杂性",以简单清晰的逻辑编写代码
  • 不理解的代码无法修复改进

可读性

  • 代码是给人看的,而不是机器
  • 编写可维护代码的第一步是确保代码可读

生产力

  • 团队整体工作小效率非常重要

为了写出其高质量的Go代码,需要如下几点。

  • 代码规范
  • 注释
  • 命名规范
  • 控制流程
  • 错误和异常处理

gofmt自动格式化代码

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

image.png

在实际工作中,注释是十分重要的。

  • 每个公共的符号:变量、常量、函数以及结构都要加注释
  • 如何既不明显也不简短的公共功能必须给予注释
  • 无论长度或复杂程度如何,对库中的任何函数都必须进行注释

注释应该解释代码的哪些呢?

  • 代码作用
    • 适合公共符号
      • 在公共的变量、常量、函数的部分的时候,要描述其用途。以便在开发的时候不会共混
  • 代码如何做的
    • 适合注释实现过程
      • 在一串代码中,可以描述出其中使用的函数、功能、有何作用
  • 代码实现的原因
    • 适合解释代码的外部因素
      • 在一串简短的代码中的时候,别人也许不理解其中为何实现出代码的功能。所以要引出上下文,其解释简短代码的流程
  • 代码什么情况会出错
    • 适合解释代码的限制条件
      • 在其函数中的看到更多。一个函数中,一些作者会写下错误及限制的条件,以便程序员不会犯错

命名规范

  • 缩略词全部大写,但当其位于变量开头不需要导出时,使用全部小写
    • 例如使用 ServerHTTP 而不是 ServerHttp
  • 变量距离其被使用的地方越远,则需要携带越多的上下文信息
    • 全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义

function


  • 函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的

  • 函数名尽量简短

  • 当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义

  • 当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数中加入类型信息

package


  • 只由小写字母组成,不包含大写字母和下划线

  • 简短并包含一定上下文信息

  • 不要与标准库同名