Aprenda Go com desenvolvimento orientado a testes
MIT License
if
/else
, switch, escreva seu primeiro programa em Go e seu primeiro teste. Sintaxe de subteste e closures.for
e benchmarking.len
, variáveis recebidas como argumentos, range
e cobertura de testes.structs
, métodos, interface
e testes orientados a tabela (table driven tests).map
.sync
, como WaitGroup
e Mutex
.context
para gerenciar e cancelar processos de longa duração.Agora que você já deu seus Primeiros Passos com Go, esperamos que você tenha uma base sólida das principais funcionalidades da linguagem e como TDD funciona.
Essa seção envolve a criação de uma aplicação.
Cada capítulo é uma continuação do anterior, expandindo as funcionalidades da aplicação conforme nosso "Product Owner" dita.
Novos conceitos serão apresentados para ajudar a escrever código de qualidade, mas a maior parte do material novo terá relação com o que pode ser feito com a biblioteca padrão do Go.
No final desse capítulo, você deverá ter uma boa ideia de como escrever uma aplicação em Go testada.
time
para programar atividades.Costumo ver perguntas nas Interwebs como:
Como testo minha função incrível que faz x, y e z?
Se tiver esse tipo de dúvida, crie uma Issue no GitHub e vou tentar achar tempo para escrever um pequeno capítulo para resolver o problema. Acho que conteúdo como esse é valioso, já que está resolvendo problemas reais
envolvendo testes que as pessoas têm.
Tenho experiência em apresentar Go a equipes de desenvolvimento e tenho testado abordagens diferentes sobre como evoluir um grupo de pessoas que têm curiosidade sobre Go para criadores extremamente eficazes de sistemas em Go.
Uma abordagem que tentamos foi pegar o livro azul e toda semana discutir um capítulo junto de exercícios.
Amo esse livro, mas ele exige muito comprometimento. O livro é bem detalhado na explicação de conceitos, o que obviamente é ótimo, mas significa que o progresso é lento e uniforme - não é para todo mundo.
Descobri que apenas um pequeno número de pessoas pegaria o capítulo X para ler e faria os exercícios, enquanto que a maioria não.
Katas são divertidos, mas geralmente se limitam ao escopo de aprender uma linguagem; é improvável que você use goroutines para resolver um kata.
Outro problema é quando você tem níveis diferentes de entusiasmo. Algumas pessoas aprendem mais da linguagem que outras e, quando demonstram o que já fizeram, confundem essas pessoas apresentando funcionalidades que as outras ainda não conhecem.
Isso acaba tornando o aprendizado bem desestruturado e específico.
De longe, a forma mais eficaz foi apresentar os conceitos da linguagem aos poucos lendo o go by example, explorando-o com exemplos e discutindo-o como um grupo. Essa abordagem foi bem mais interativa do que "leia o capítulo X como lição de casa".
Com o tempo, a equipe ganhou uma base sólida da gramática da linguagem para que conseguíssemos começar a desenvolver sistemas.
Para mim, é semelhante à ideia de praticar escalas quando se tenta aprender a tocar violão.
Não importa quão artístico você seja; é improvável que você crie músicas boas sem entender os fundamentos e praticando os mecanismos.
Quando eu aprendo uma nova linguagem de programação, costumo começar brincando em um REPL, mas hora ou outra preciso de mais estrutura.
O que eu gosto de fazer é explorar conceitos e então solidificar as ideias com testes. Testes certificam de que o código que escrevi está correto e documentam a funcionalidade que aprendi.
Usando minha experiência de aprendizado em grupo e a minha própria, vou tentar criar algo que seja útil para outras equipes. Aprender os conceitos escrevendo testes pequenos para que você possa usar suas habilidades de desenvolvimento de software e entregar sistemas ótimos.
if
, variáveis, funções etc.Logo criado por egonelbre Que estrela!