Clean Code #2: capriche em sua funções
No post anterior foi abordado a importância de escolher bem os nomes, nesse post o assunto trabalhado serão as funções. O Clean Code estabelece alguns conceitos para determinar se uma função está bem escrita.
As funções devem ser pequenas!
Funções com muitas linhas são difíceis de serem lidas e entendidas. Por essa razão é muito importante mantê-las pequenas, abaixo um exemplo:
O algoritmo acima faz o cálculo da fórmula de Bhaskara, olhando para ele podemos notar que faz coisas demais e poderia ser dividido por responsabilidades para ficar menor e mais legível. Abaixo a versão refatorada da função:
A função acima ganhou mais linhas que sua versão original, então quais as vantagens?
Agora cada função faz apenas uma coisa. Essa é uma premissa do Clean Code, cada função deve fazer apenas uma coisa e fazer isso bem feito. Temos partes que podem ser reutilizadas tornando nosso código mais modular. Note que as funções, is_zero, is_greater_than_zero, entre outras, podem ser utilizadas em outras partes da aplicação seguindo o princípio do DRY (Don't Repeat Yourself).
Facilite a leitura de seu código
Observe o código abaixo:
Note que a segunda opção é mais fácil de ser lida, isso porque lê-se "se $a for zero, calcule a raiz simples".
Utilize poucos níveis de indentação
Cada função deve ter um ou dois níveis de indentação e nada mais que isso. Estabelecer esse padrão e segui-lo à risca é importante para garantir que códigos como o do Haduken não sejam mais escritos.
Não utilize else
Pesquisando em outras regras de boas práticas, encontrei o Object Calisthenics e, uma das regras diz "não use a palavra reservada else". A parte interessante de remover o else de nossos códigos, é que diminuímos os fluxos de execução, diminuindo por sua vez a complexidade ciclomática.
Conclusão
Embora o código refatorado ainda tenha vários problemas, é possível notar uma melhora da versão original. Porém, o foco desse post era mostrar alguns detalhes voltados as funções.
Manter nossos códigos limpos e bem escritos é fundamental para que um sistema cresça sem se tornar uma bagunça. E esse cuidado começa nos pequenos detalhes.