Disclaimer
Este texto foi inicialmente concebido pela IA Generativa em função da transcrição do episódio do nosso canal, Dev Eficiente. Se preferir acompanhar por vídeo, é só dar o play.
Introdução
No mundo do desenvolvimento de software, muitas vezes nos deparamos com situações que exigem decisões rápidas e eficazes. Ter um conjunto de práticas de uso recorrente pode nos ajudar a tomar melhores decisões de código, tornando nosso software mais organizado, manutenível e preparado para mudanças.
Neste post, vou compartilhar 5 práticas de código que uso no meu dia a dia para escrever um código que considero mais interessante. Vamos lá!
1. Colocar a lógica junto do estado
Quando vejo um código que acessa o estado de um objeto fora da classe para fazer alguma verificação, meu radar apita. Mover essa lógica para dentro da classe, próximo de onde o estado é definido, traz benefícios como:
- Maior coesão e melhor distribuição de responsabilidades
- Facilita o reaproveitamento do código
- Aumenta testabilidade
Em geral, prefiro ter a lógica próxima de onde o estado é definido. Consigo perceber este tipo de cenário de forma quase automática.
2. Abstrair decisões que podem mudar
As vezes tomamos uma decisão de tecnologia, como usar uma biblioteca ou framework específico, mas não temos certeza se manteremos essa decisão no futuro. Nesses casos, costumo criar uma abstração própria, como uma interface, que define os pontos de interação com aquela tecnologia.
Assim, se precisar trocar no futuro, basta criar uma nova implementação da interface, sem que o resto do código seja impactado. É uma forma de se proteger contra decisões que podem mudar.
Aqui pode ser uma interface para facilitar promover evolução sem mudança, ou pode ser simplesmente um wrapper direto. No caso do wrapper vai promover a evolução com mudança, e não tem nada de errado nisso.
3. Inverter dependências quando necessário
Em sistemas grandes, é comum que a evolução do código possa levar classes de domínio (as mais centrais e importantes) a necessitarem conhecer detalhes de classes mais periféricas, como DTOs ou classes de infraestrutura.
Quando percebo essa situação, e acho que vai ser prejudicial, uso a inversão de dependência. Crio uma interface no domínio que representa o que eu preciso, faço a classe periférica implementar essa interface, e passo a depender apenas da interface no meu código de domínio. Isso mantém o núcleo do sistema independente e facilita futuras evoluções.
4. Encapsular sequências de operações em classes
Quando vejo um trecho de código que usa a mesma variável várias vezes seguidas para fazer cálculos ou extrair informações, considero extrair esse código para uma classe.
Essa classe recebe a tal variável no construtor e implementa métodos que representam cada uma das operações feitas. Isso torna o código mais expressivo, divide melhor as responsabilidades e facilita a manutenção.
5. Favorecer construtores
Ao ver uma classe cujos atributos são populados usando setters, depois da instanciação, já sei que vou refatorar para usar um construtor. Afinal, se todo objeto precisa desses dados, faz sentido exigi-los na inicialização. No caso do construtor ter muitos parâmetros de tipos parecidos, posso usar um Builder.
Além disso, se não há necessidade de alterar esses atributos, apago os setters. Códigos que permitem alteração dos valores sem real necessidade tendem a ser mais frágeis e propensos a bugs.
Conclusão
Essas são algumas das práticas que uso para escrever códigos melhores. Perceba que elas não são regras universais, mas sim diretrizes que me ajudam a tomar boas decisões de projeto.
Ter esse repertório de soluções me ajuda a identificar e resolver problemas rapidamente. E o mais legal é que quanto mais você pratica, mais naturais elas se tornam.
Se você tem outras práticas, compartilhe nos comentários! Vamos aprender juntos a escrever códigos melhores a cada dia.
Sobre a Jornada Dev + Eficiente
A Jornada Dev + Eficiente é um treinamento focado em fazer você crescer na carreira como uma pessoa cada vez mais especializada em Design e Arquitetura de Software.
A Jornada pavimenta este caminho fazendo com que você seja cada vez mais capaz de colocar código de qualidade em produção com cada vez mais velocidade.
Para conhecer mais, acesse https://deveficiente.com
Top comments (0)