工 程 管 理
Go语言设计的初衷就是为了解决工程上出现的问题而设计,其自带的Go工具更是从工程管理的方方面面去考虑,力求提供完善的功能,让学习Go语言的目的是为了解决工程中遇见的场景,避免出现学院派和工程派的不同分歧。Go语言是一门工程语言毋庸置疑,那么Go语言在靠近工程管理中有哪些管理思想,工具和规范呢?如下是Go语言的是一门工程语言的有力证明。
- 代码风格
- 文档风格管理
- 单元测试和性能测试
- 项目工程结构
- 跨平台开发
- 打包分发
Go命令行工具
在安装了Go语言的安装包之后,就直接自动安装了Gotool命令行工具,比如查询Go语言的安装版本就是命令行工具,如下:
$ go version
go version go1
一般需要查询命令的时候会使用help命令,Go语言中help命令如下:
总的来说Gotool可以帮助我们完成如下的工作:
- 代码格式化
- 代码质量分析和修复
- 单元测试与性能测试
- 工程构建
- 代码文档的提取和展示
- 依赖包管理
- 执行其他的包含指令
代码风格
“代码必须是本着写给人阅读的原则来编写,只不过顺便给机器执行而已“这段话来自《计 算机程序设计与解释》,很精练地说明了代码风格的作用。简直一语中的,好的优雅的注重代码风格的代码看着让人如浴春风,一团乱麻的代码让人如鲠在喉,我曾经觉得如果你写的代码连实习生都能读懂,那么你写的代码已经很好了,大道至简,Go语言在很多代码规范中做了强制的要求这种要求减少了争议,更简化了问题,Go语言的编程规范主要由Go编译器进行强制的编码规范以及由Gotool推行的非强制性编码风格建议两种组成。
强制性编码规范
命名
命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。这种规范我第一接触很不习惯,java中大写字母开头一般是类名,常量或者全局函数方法等很少是以大写字母开始,总让我感觉很奇怪,java中一般是骆驼命名法(类似于jueJingSheQu)。需要对外暴露的变量和常量java中会多引入一个关键字修饰符,Go语言中直接以首字母就大小写就解决了。Go语言明确宣告了拥护骆驼命名法而排斥下划线法,其实我在java中已经很少使用下划线法可能是个人习惯吧!
排列
其实我觉得就是大括号和缩进的问题,Go语言规定大括号不能另起一行。来个排列规范的代码吧:主要是统一的排列看着也舒服。
func Foo(a, b int)(ret int, err error) {
if a > b {
ret = a
} else {
ret = b
}
}
远程import支持
Go语言需要调用远程的jar包使用,比如需要使用Github上的CRC32的包可以如下写:
package main
import (
"fmt"
"github.com/myteam/exp/crc32"
)
在执行go build或者go install之前,只需要加这么一句:
go get github.com/myteam/exp/crc32
当执行完go get
之后,我们会在src
目录中看到github.com
目录,其中包含
myteam/exp/crc32
目录。在crc32
中,就是该包的所有源代码。也就是说,go工具会自动帮你获取位于远程的包源码,在随后的编译中,也会在pkg
目录中生成对应的.a
文件
总结
先学到此处吧,多了也记不住,想起群里的大神说的一句话”写文章是个自悦的方式,是自我的总结,不求赞不求看,你自己写完自己总结完就行了“语录出自韩玄亮很有道理和哲理的一句话。说实话很少有平台鼓励你写作还赔上礼物鼓励的那种!!!
备注
本文正在参与「掘金Golang主题学习月」, 点击查看活动详情。