【翻译】更好的编写Go语言 Part.I

更好编写Go语言

作者: koangel 发表于: 2017-06-17 14:13:21

起始

本文基本上是翻译官方文档,翻译不当之处欢迎骚扰,谢谢(从小英语没学好),很多内容为自我理解的解释,我并不完全按照文档翻译,所以也请指出其中错误,谢谢。

个人认为Go语言更适合在Scrum或Xp等敏捷开发中展现其优势,最大的原因是语言风格级的统一,本文中也会介绍类似内容。

由于内容过多,我会慢慢翻译,没别的目的,主要是为了自己更深刻的理解GO语言背后的编写模式,曾经看过一篇文章表述的大概意思是:用你所使用的语言的思维方式去思考,像电影《降临》中一样,学习不同的语言或熟悉不同的语言可以帮助我们去更好的思考问题。

原文地址:点我进入

介绍 (Introduction)

首先GO语言是一门新的语言,其中大量语法结构来自于已存在的语言,例如C++、C或JAVA,很多人说GO其实是最接近于C语言的,我不反对,但是实际上很多语法特性来自于其他的语言,例如python等。

本文的目的只是希望可以让更多人编写出更清爽、规范的GO语言代码,而在阅读本文之前,希望您可以先阅读GO基础语法教程以及如何编写GO语言

例子

GO语言本身的例子丰富多彩,除了自身的核心库有例子可以直接在WEB中运行外,还有Github中的例子,可以搜索开源库学习更多内容。
当然除了核心库本身,你自己也可以编写一些Go代码在Web中运行,例如 Go首页左边的运行或者像查看核心库时时strings点击Run,整个GO核心库中有大量的可运行例子。
如果你有问题需要提问,可以加入一些QQ群或者查阅Golang中的文档,如果英文和我一样烂,可以找群大神聊聊。
公布几个QQ群:894864、222026651、123378365,欢迎加入。

代码格式(Formatting)

源码格式一直是最具有争议性的内容,例如你在写Cpp、C或Java时都会存在大括号的圣战,所以我们必须要有一个最终结果。当然人可以适应各种各样的代码风格,但是不同的代码风格会导致团队一致性存在问题,也会给阅读代码带来巨大的阻碍,尤其大量团队使用SCURM或XP的管理模式下。GO为了避免这个问题在代码格式统一上作出了强制要求,是的他不允许你首大括号换行,也不允许出现各种奇葩代码编写方式。

当然这种层面的代码统一是靠人没办法强制要求的,但是编译器可以,所以Go为了帮助程序员快速适应这些内容,开发了一个工具叫做gofmt,这个工具可以帮助程序员快速识别并格式化整个代码。

例如以下代码是非标准的:

type T struct {
    name string // name of the object
    value int // its value
}

当你保存时,编辑器会去运行gofmt,这个时候代码自动变为:

type T struct {
    name    string // name of the object
    value   int    // its value
}

是不是看上去清爽多了?

绝大部分的代码格式都可以依赖gofmt来完成基本的格式化行为。

当然还有一些小细节要交代,但是很简单:

缩进

好吧默认的大部分语言缩进是用 制表符(tab)的,Go也不例外,当然你可以设置它使用空格,但是我不推荐噢。

行长度

一般来说在任何语言中都不推荐一行过长,这个是最基本的要求,包括在一些书中,但是如果你实在太长,我建议通过换行函数或缩减参数等方法来优化代码长度,依靠fmt是没戏的,折行会自动插入TAB所以也不比担心。

小括号(圆括号)

在C、C++、Java这些语言中,控制语句大部分是要括号的,但是Go实际上是不需要的,所以这里要注意噢。So,因此以下操作

x<<8 + y<<16

语句会变得更加简洁。

但是还有一些内容需要程序员自己控制,但是个人建议还是尽量保持风格统一以便在行政级别更好管理。

Part I 结束

暂时先翻译这些,稍后补足后续内容。