Go语言很可能是第一个将代码风格强制统一的语言。一些对于其他语言的编译器完全忽视的问题,在Go编译器前就会被认为是编译错误,比如如果花括号新起了一行摆放,你就会看到一个醒目的编译错误。这一点会让很多人觉得不可思议。无论喜欢还是讨厌,与其他那些单单编码规范就能写出一本书的语言相比,毫无疑问Go语言的这种做法简化了问题。
强制性代码规范
命名
命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。 Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。
软件开发行业最流行的两种命名法分别为骆驼命名法(类似于DoSomething和doSomething)和下划线法(对应为do_something),而Go语言明确宣告了拥护骆驼命名法而排斥下划线法。骆驼命名法在Java和C#中得到官方的支持和推荐,而下划线命名法则主要用在C语言的世界里,比如Linux内核和驱动开发上。在开始Go语言编程时,还是忘记下划线法吧,避免写出不伦不类的名字。
排列
Go语言甚至对代码的排列方式也进行了语法级别的检查,约定了代码块中花括号的明确摆放位置。Go语言的这条规则基本上就保证了所有Go代码的逻辑结构写法是完全一致的,也不会再出现有洁癖的程序员在维护别人代码之前非要把所有花括号的位置都调整一遍的问题。
非强制性编码风格建议
Gotool中包含了一个代码格式化的功能。
可以看出,用法非常简单
go fmt xxx.go
格式化工具做了如下几种事情:
调整了每条语句的位置
重新摆放花括号的位置
以制表符缩进代码
添加空格