作为软件工程师,出产物就应该具备工程的健壮性和美观性。因此代码规范是作为软件工程师的职业素养。在打码过程,能够保持负责任的初心,以及追求完美的精神。
一、命名规范
命名除了必须符合编码规范外,同时应尽量使其让其具备良好的可读性。 命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。 Go在命名时以字母a到Z或a到Z或下划线开头,后面跟着零或更多的字母、下划线和数字(0到9)。Go不允许在命名时中使用**@、$和%等标点符号。Go是一种区分大小写的编程语言。因此,Manpower和manpower**是两个不同的命名。
-
当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如: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. 常量命名
- 常量均需使用MixedCaps(http://gof.piggy.xiaozhu.com/docs/zh-CN/codespec/naming?id=mixedcaps)命名方式,并使用下划线分词
- 如果是枚举类型的常量,需要先创建相应类型
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