O inglês tem um ditado:
"If it ain't broke, don't fix it. "
Quer dizer: "Se não está quebrado, não conserte."
Essa frase devia ser gravada em aço e pendurada em todas as salas onde acontecem atividades ligadas à Engenharia de Software. Cada vez que colocamos a mão em uma linha de código que estava funcionando perfeitamente "só para arrumar um negócio" trazemos um risco gigantesco ao processo como um todo. Não fazemos aplicações cheias de funções independentes, fazemos sistemas que trabalham interligados, com funções que dependem umas das outras.
Esse princípio anda de mãos dadas com o YAGNI (You ain't gonna need it), que sugere que você não adicione funcionalidades, até que elas sejam necessárias.
Todos nós passamos por essa tentação. Aqui no Brasil ela vem com as famosas 2 palavras "Já que":
- "Já que" eu vou arrumar esse cadastro, já vou indentar direito esse código.
- "Já que" eu vou ter mexer nessa inclusão, vou arrumar também a alteração para manter o padrão.
- "Já que" vou incluir uma coluna na tabela, vou aproveitar e trocar a chave que está errada.
Já viu o que acontece depois… Você identou o código e sem querer esbarrou em alguma tecla: pau! Você modificou a rotina de alteração para manter o tal do padrão, e arrancou sem querer uma regra de negócio: pau! Você trocou a chave da tabela, e um cadastro que ninguém sabia que existia (alguém sempre usa…) passou a dar problema: pau!
Se você vai alterar um aplicativo, trate o trabalho como um reparo em uma peça de cristal. Segure-o com cuidado, repasse o plano do que vai fazer, e não mexa onde não deve!
Giovanni Bassi
Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.