Qualidade de código: encapsular estruturas condicionais

Recentemente escrevi sobre qualidade de código apresentando uma ferramenta de análise de código chamada Sonar. Esta ferramenta verifica vários aspectos do código fonte, entre eles a complexidade do código.

Códigos complexos possuem muitos caminhos de execução e, além de ter uma chance maior de serem origens de bugs, são mais difíceis de ler. O ideal seria um código que pudesse ser lido naturalmente, como uma carta, onde tudo fosse entendido imediatamente. É claro que é muito difícil chegar a este nível, mas existem muitas maneiras de tornar o código menos complexo e mais legível.

Uma abordagem muito interessante é o encapsulamento de estruturas condicionais. Apesar de ser uma técnica simples, passa muitas vezes despercebida e causa uma enorme diferença na legibilidade do código.

Considere a estrutura condicional abaixo:

Esta estrutura é complexa para se entender. Ao ler o código é preciso parar neste ponto e decifrar essa condição. Felizmente, com o encapsulamento de estruturas condicionais, é possível tornar este código mais simples e fácil de entender. Veja um exemplo do que poderia ser feito para melhorar este código:

Foi criado um método para representar a condição. O método criado leva o nome da condição, facilitando a leitura do código. Além disso, há uma separação de conceitos ao tirar a complexa lógica de condição para um ponto específico do código, facilitando manutenções futuras.

O encapsulamento de condições é uma técnica de codificação simples, mas seus efeitos são incríveis. É interessante adotar o encapsulamento em outros pontos do código também, para remover trechos muito complexos e específicos para seus blocos individuais. Quanto mais encapsulamento houver, mais fácil de ler fica o código.

Mas o encapsulamento deve ser utilizado com seu devido cuidado, é importante aplicar conceitos de coesão e separação de responsabilidades junto com encapsulamento, desta forma o código terá um equilíbrio e uma beleza natural.