A relevância do desenvolvimento contínuo de um código limpo
Com as tecnologias que constituem o cenário da programação em constante evolução, falar sobre boas práticas no desenvolvimento e manutenção de um software se torna cada vez mais relevante. Em um cenário como o atual, que aprecia a velocidade e a agilidade nas entregas das soluções tecnológicas, pode parece tentador sacrificar a clareza e organização do código em prol de uma entrega cada vez mais rápida. Entretanto, nessa corrida incessante, a importância de se ter um código limpo se mantém inalterada.
Apesar das ferramentas tecnológicas alterarem constantemente, o conceito do que pode ser um código limpo é atemporal, criar um código limpo não é em vão, considerando que ele é a base para se ter sistemas robustos e com fácil manutenção. Diante disso, existem alguns livros que abordam esse tema, dos quais trago aqui o livro: Código Limpo: Habilidades Práticas do Agile Software.
Este livro foi escrito por Robert C. Martin, também conhecido como o famoso Uncle Bob (Tio Bob), que aborda preocupações, princípios, práticas e padrões para garantir a existência de um código limpo no desenvolvimento de sistemas.
O livro inicia abordando o conceito do que é um código limpo. Traz definições segundo alguns autores, como o Bjarne Stroustrup, que também foi o criador do C++, ele afirma que:
A lógica de um código limpo deve ser direta para dificultar o encobrimento de bugs, as dependências devem ser minimas para facilitar a manutenção e finaliza enfatizando que o código limpo faz bem uma única coisa.
Um conceito que combina com todas as definições propostas e se alinha perfeitamente com a abordagem do livro é que o código para ser limpo, ele precisa ser feito por alguém que se importa.
Para o autor existem várias formas de se importar com o código e ele traz isso a partir de exemplos e práticas ao longo dos seguintes temas:
- Nomes significativos — Como criar nomes de variáveis, funções, parâmetros, classes entre outros que dê significado ao que está sendo proposto.
- Funções — Destaca que elas são a primeira linha de organização em qualquer programa e da ênfase em como podem ser melhor descritas.
- Formatação — Traz a importância da boa impressão que é causada quando se tem um código polido.
- Objetos e estruturas de dados — Aborda questionamentos sobre a utilização de métodos que expõe suas variáveis como se fossem públicas.
- Tratamento de erros — Ressalta técnicas e considerações para criar um código que seja limpo e robusto e ainda assim, trate erros com elegância e estilo.
- Limites — Apresenta técnicas para manter limpo os limites do software mesmo integrando com sistemas externos.
- Classes — Exemplifica e discute sobre como deixar uma classe limpa.
- Sistemas — Usa de analogias para facilitar o entendimento e aplicação dentro do desenvolvimento.
Além disso, ainda fala sobre emergência, concorrência, refinamento, JUnit, refatoramento, odores e heurísticas e muitos casos com exemplos práticos e análises específicas de uso.
Este livro não é um livro para se ler uma única vez e deixá-lo de lado, é um livro de cabeceira que vale a pena ser revisitado vez ou outra. O autor usa a linguagem em java para explorar cada exemplo mostrado, mas pode facilmente ser entendido e aplicado em outras linguagens.
Também vale destacar que o livro contempla várias fases do desenvolvimento de um software e da vida profissional do desenvolvedor, isso significa que os conceitos ali contidos vão com certeza acrescentar na vida de qualquer profissional, independente da sua experiência.
Você já leu esse livro? Se sim, qual capítulo mais te cativou? E por quê?