Código
A etapa de Codificação traz a implementação da solução do problema proposto em código (produto do projeto).
+-------+ +---+ +-------------+
|CLIENTE| <--> |API| <--> |IMPLEMENTAÇÃO|
+-------+ +---+ +-------------+
Desenvolvimento Guiado por Testes - Test Driven Development (TDD): é uma técnica de desenvolvimento de software da Programação Extrema - Extreme Programming (XP), em que os testes são criados antes do código de produção, através do seu ciclo:
- Red (Test Fails): criação da Interface de Programação de Aplicativos - Application Programming Interface (API) com o exercício de uma parte do comportamento da tarefa (User Story) através do código de Testes - fazer falhar, assim representando cada incremento do cenário;
- Green (Test Passes): implementação do código - fazer o teste passar; e
- Refactor: aplicação da refatoração em melhorias nos recursos utilizados no ciclo, como código, teste, configuração e etc...
Escrever os testes antes do código melhora a estrutura do projeto, pois traz feedback mais cedo e apredizado constante.
Refatoração - Refactoring: é uma técnica de melhoria na estrutura interna do código, sem alterar seu comportamento, através de correções em padrões de problemas (bad smells):
- Refactoring_: catálogo de técnicas sobre refatoração;
- SourceMaking: compilado de técnicas para melhoria no código;
- Dívida Técnica (Technical Debt): complexidade acumulada durante o desenvolvimento;
- Código Legado: código antigo e com características fora do padrão de desenvolvimento; e
- Design smells: sintomas de um projeto ruim.
Integração Contínua - Continuous Integration (CI): é um processo da Programação Extrema - Extreme Programming (XP) para a integração dos incrementos de codificação, com execução automática e avaliativa dos testes - simulando o ambiente de produção. O processo é automático por um sistema de integração contínua, na qual verifica o repositório de código, realiza o check-in/build e analisa a saúde do projeto, notificando os problemas aos desenvolvedores.
Programação por Contrato: o cliente aceita as regras (obrigações e benefícios) de como manipular os problemas pelo uso incorreto da Interface de Programação de Aplicação - Application Programming Interface (API) - geralmente verificando as pré-condições, pós-condições e invariâncias; e retornando um valor nulo, opcional ou lançando uma exceção - uma representação de falha.
* Pré-condição: indica uma violação pelo cliente, falhou em não observar as condições impostas na sua chamada.
* Pós-condição: indica uma violação pela implementação, falhou em entregar sua promessa.
* Invariância: indica uma propriedade na qual deve ser satisfeita pelo cliente e preservada pela implementação.
Programação Defensiva: a Interface de Programação de Aplicação - Application Programming Interface (API) protege o cliente do uso incorreto - geralmente realizando checagens nos valores de entrada e retornando um resultado padrão ou lançando uma exceção com tratamento obrigatório.