Skip to main content

Clean Code

Vemos bastante essa palavra nas documentações do SonarQube então vale a pena explicar melhor.

A meta é conseguir chegar em um código que esteja respeitando as regras do clean code, e o que isso significa? Significa o código precisa atingir alguns atributos de consistência, intencionalidade, adaptabilidade e responsabilidade.

alt text

Clean Code SonarQube.

Consistência

Código deve ser uniforme e convencional. Todo o código deve parecer simular e seguir um padrão regular.

  • Formatação
    • Igualmente entre todos que contribuem para um projeto. Algumas pessoas usam 4 espaços para diferenciar os blocos de um arquivo YAML e outras usam 2.
    • É bom utilizar um linter para atingir este objetivo.
  • Convencional
    • Utilizar os recursos da linguagem de forma apropriada.
  • Identificável
    • Os nomes para variáveis, funções, etc seguem um padrão baseado na convenção da linguagem.

Intencional

Código preciso e proposital sendo que cada instrução faz sentido.

  • Limpo e Claro

    • Código é autoexplicativo e escrito de forma direta sem ambiguidades.
  • Lógico

    • Instruções bem formatadas e sólidas. Livre de contradições e comandos imprevisíveis ou questionáveis.
  • Completo

    • Código usado de forma adequada sendo funcional e atingindo os objetivos implícitos. Por exemplo uma função que recebe vários parâmetros, mas funciona com metade deles.
  • Eficiente

    • Usa recursos sem desperdício, priorizando opções mais econômicas para uso de memória, processador, disco e rede.

Adaptabilidade

O código é estruturado para ser fácil de evoluir e desenvolver com confiança. Ele torna fácil estender ou reaproveitar suas partes e promove mudanças localizadas sem efeitos colaterais indesejáveis.

  • Focado
    • O código tem um escopo único e específico. As unidades fazem o que têm que fazer sem acúmulo de instrução ou complexidade.
  • Distinto
    • Cada parte faz o que precisa fazer sem duplicação indevida de código.
  • Modular
    • Código organizado com separação entre suas partes, sendo que os relacionamentos dentro do código são bem gerenciados.
  • Testado
    • Tem cobertura de testes

Responsábilidade

Leva em consideração as obrigações éticas em relação aos dados.

  • Legal

    • Respeita a regulamentação de licenciamento e direitos autorais exercendo os direitos do criador e honrando os direitos de outros de licenciar seu próprio código.
  • Confiável

    • Preserva informações privadas e sensíveis. Uso de credenciais dentro do código é um ótimo exemplo disso.
  • Respeitoso

    • Não utiliza linguagem discriminatória e ofensiva.