点击上方蓝色“Go语言中文网”关注我们,设个星标,每天学习 Go 语言
从今天起,Go语言中文网公众号为大家带来一个系列:通过测试学习 Go 语言,希望对新手学习有帮助!
图片由 Denise 创作[1]
通过 Go 语言学习测试驱动开发
其他语言:English[2],Português[3]
通过编写测试学习 Go 语言
为测试驱动开发打下基础。Go 是学习测试驱动开发的优秀语言,因为它简单易学而且内置测试功能
相信你很快就可以使用 Go 语言编写健壮的、经过良好测试的系统
我曾经向一些开发团队介绍过 Go 语言,并尝试用不同的方法促使一个团队从对 Go 感兴趣成长为 Go 的高效开发者。
我们尝试过阅读蓝皮书[4](The Go Programming Language),每周在练习的同时讨论下一章的内容。
我很喜欢这本书,但它需要高度的投入。它非常详细地解释了每个概念,这很棒但也意味着进步是缓慢的 —— 这不适用于每个人。
我还发现只有一小部分人会阅读第 x 章并完成章节后的练习,大多数人都不会做。
Kata[5][^注1](编码套路)很有趣,但是对于学习一门语言,它的作用有限,你不太可能用 Go 例程来解决 kata 问题。
另一个问题是每个人学习的热情不同,当学的更多的人演示他们开发的功能时,会导致其他人对不熟悉的特性感到困惑。
这最终会使学习的体验变得 凌乱无序。
到目前为止,最有效的方法是通过 go by example[6] 逐步介绍语言的基础,通过例子探索学习,并以小组形式讨论。这是一种比「阅读并完成第 x 章的练习」更具互动性的方法。
随着时间的推移,团队获得了坚实的语法基础,这样我们就可以开始构建系统了。
这对我来说就像是在学习吉他时练习音阶。
不管你认为自己多有艺术感,你不可能在不了解基本原理和练习技巧的情况下写出好音乐。
当学习一种新的编程语言时,我通常会在 REPL(Read-Eval-Print-Loop)环境下随意编写代码,但是最终我还是要让程序更加结构化一点。
我喜欢探究概念,然后通过测试来巩固这些想法。测试验证我编写的代码是正确的,并记录我已经学到的特性。
以我的团队学习经历和我自己的个人风格,我将尝试创造一些新的学习方式,希望证明对其他团队也有用。通过编写简单的测试来学习基础知识,这样你就可以掌握现有的软件设计技巧并交付一些优秀的系统。
对学习 Go 语言有兴趣
已经对 Go 有一些了解,但是想要了解更多测试的内容
一台电脑
安装 Go[7]
一个文本编辑器
一些编程的经历,理解 if
、变量、函数等的概念
熟练地使用终端
在这里[8]提交 issue/PR 或者 tweet me @quii[9]
MIT license[10]
作者:Chris James[11]译者:Donng[12]校对:flw[13]、pityonline[14]
本文由 GCTT[15] 原创编译,Go 中文网[16] 荣誉推出
注 1: 针对某一种特定技术或技能进行重复性的练习,从而将其熟练掌握。套路(Kata)这个概念借鉴于武术,指的是可以独自或多人共同练习的一系列动作、招式。
图片由 Denise 创作: https://twitter.com/deniseyu21
[2]English: https://quii.gitbook.io/learn-go-with-tests
[3]Português: https://larien.gitbook.io/aprenda-go-com-testes/
[4]蓝皮书: https://www.amazon.co.uk/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440
[5]Kata: https://en.wikipedia.org/wiki/Kata_%28programming%29
[6]go by example: https://gobyexample.com/
[7]安装 Go: https://golang.org/
[8]这里: https://github.com/studygolang/learn-go-with-tests
[9]tweet me @quii: https://twitter.com/quii
[10]MIT license: LICENSE.md
[11]Chris James: https://dev.to/quii
[12]Donng: https://github.com/Donng
[13]flw: https://github.com/flw-cn
[14]pityonline: https://github.com/pityonline
[15]GCTT: https://github.com/studygolang/GCTT
[16]Go 中文网: https://studygolang.com/