Quer ver eu te fazer uma pergunta que te fará pensar o resto do dia?
Como olhar para um código e dizer que ele é de qualidade? Essa é sem dúvida uma pergunta que todos nós tentamos responder todos os dias.
Como bem sabemos, podemos olhar trechos de código por vários pontos
de vista diferentes: o quão complexo ele é (muitos ifs, muitas linhas), o
quão coeso ele é, o quão acoplado ele é, etc. Sendo tão difícil pensar
em qualidade de código, vamos tentar mudar o nível. Quando que um
sistema tem qualidade interna, ou seja, do ponto de vista de código?
Nós gostamos de sistemas que sejam fáceis de mexer. Ou seja,
quando o usuário final pede uma mudança, é relativamente fácil de
localizar onde ela deve ser feita e, depois de feita, não há propagação
de problemas.
Para que isso aconteça, o código deve estar bem modularizado; cada
classe deve ter sua responsabilidade, e as relações entre elas devem
estar bem definidas. É aqui que entra a ideia do código sólido,
princípios criados por Michael Feathers e
popularizados pelo Uncle Bob há bastante tempo.
A brincadeira com o termo “código sólido” vem do acrônimo SOLID. Cada
letra representa um dos 5 princípios de orientação a objetos que nos
ajudam a manter o código organizado: