Go的编码规范(上) | 青训营

196 阅读4分钟

作为软件工程师,出产物就应该具备工程的健壮性美观性。因此代码规范是作为软件工程师的职业素养。在打码过程,能够保持负责任的初心,以及追求完美的精神。

一、命名规范

命名除了必须符合编码规范外,同时应尽量使其让其具备良好的可读性。 命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。 Go在命名时以字母a到Z或a到Z或下划线开头,后面跟着零或更多的字母、下划线和数字(0到9)。Go不允许在命名时中使用**@、$和%等标点符号。Go是一种区分大小写的编程语言。因此,Manpowermanpower**是两个不同的命名。

  • 当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);

  • 命名如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )

1.包命名

保持package的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,尽量和标准库不要冲突。包名应该为小写单词,不要使用下划线或者混合大小写。

package num
package user
package services

2.  文件命名

尽量采取有意义的文件名,简短,有意义.

  • 使用下划线分隔各个单词(由于业务代码名称一般偏长, 更清晰的表达,全部小写单词
  • 其中测试文件以test.go结尾,除测试文件外,命名不出现*
pressure_test.go

3. 方法命名

方法名、函数名、变量、常量等标识符的命名,遵循Go社区关于使用 MixedCaps (可导出-大驼峰, 不可导出-小驼峰) 的约定。

有一个例外,为了对相关的测试用例进行分组,函数名可能包含下划线,如:TestMyFunction_WhatIsBeingTested.

关于缩写 名称中的缩写词或首字母缩写词(例如"URL"或"NATO")具有一致的大小写。 例如,"URL"应显示为"URL"或"url"(如在"urlPony"或"URLPony"中),而不应显示为"Url"。

对于包含多个缩写的标识符,也应当保遵守这个规则,例如:"xmlHTTPRequest"或"XMLHTTPRequest"。

ImportBlackRequest
ChangeCrontabType()
CountProduct()
AddProductRequest

4. 结构体命名

  • 采用驼峰命名法,首字母根据访问控制大写或者小写
  • struct 申明和初始化格式采用多行,例如下面:
  • 结构体名应该是名词或名词短语,如Account,Book避免使用Manager这样的

5. 变量命名

和结构体类似,变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写,但遇到特有名词时,需要遵循以下规则:

作用域越小,命名应该越简短。如在for循环内部用i表示index 变量名不应该包含类型,变量的名称应描述其内容,而不是内容的类型 如果变量为私有,且特有名词为首个单词,则使用小写,如 apiClient 其它情况都应当使用该名词原有的写法,如 APIClient、repoID、UserID 错误示例:UrlArray,应该写成 urlArray 或者 URLArray 若变量类型为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头

6. 常量命名

7. 关键字

下面的列表显示了Go中的保留字。这些保留字不能用作常量或变量或任何其他标识符名称

包管理(2个):

import  package

程序实体声明与定义(8个):

chan    const   func    interface   map struct  type    var

程序流程控制(15个):

break   case    continue    default defer   else    fallthrough

for     go      goto        if      range   return  select      switchtps