Precisamos levar mais a sério essa frase em nosso dia a dia quando estamos programando!

Todo conhecimento deve ter uma representação única, inequívoca e autoritária dentro de um sistema. - Andrew Hunt e David Thomas

O que os autores queriam realmente expressar quando escreveram sobre "uma representação única, inequívoca e autoritária"? Podemos resumir:

  • Única: A informação ou conhecimento deve ser representada apenas uma vez.

  • Inequívoca: Não há dúvida sobre onde encontrar essa informação ou qual é a fonte correta.

  • Autoritária: Essa única representação é a fonte oficial ou definitiva de tal informação. Se há alguma alteração, atualização ou disputa, esta é a fonte que prevalece. Qualquer parte da informação ou regra de negócio deve estar definida em apenas um lugar no código, e esse lugar é considerado a fonte de verdade.

Qual a diferença da Inequívoca para Autoritária?

A primeira vista pode ser difícil entender. A palavra "inequívoca" refere-se à clareza e à falta de ambiguidade. Quando falamos que uma representação é "inequívoca", significa que é clara e não há dúvidas sobre o que representa.

Mas quando falamos sobre "autoritária" estamos nos referindo sobre a oficialidade e a confiabilidade da fonte da informação. Uma fonte "autoritária" é considerada a versão oficial, confiável e definitiva de uma informação.

Em outras palavras, uma representação inequívoca nos diz o que exatamente a informação é, enquanto uma fonte autoritária nos assegura que a informação é confiável e definitiva.

Mas e você, acredita que esses conceitos podem ser aplicados no nosso dia a dia?

Parabéns pela postagem, ela tem um valor enorme, e quem ainda não leva a sério tem mais uma chance agora.

A tradução mais adequada seria:

Cada conhecimento deve ter uma representação única, inequívoca e autoritativa dentro de um sistema.

Autoritário não está errado, mas não passa bem a ideia, é fácil achar que é algo obrigado à força, o que não é o caso.

Esta é a definição de um princípio de programação chamado DRY, que eu considero ser o mais importante de todos. E que algumas pessoas estão fazendo todo o possível para subverter. Muitas vezes porque falta o que eu sempre falo, precisa estudar os fundamentos. E se guiar por eles. Quando você faz isso você para de seguir modinhas que não fazem o menor sentido. Boa parte das novidades deste século na área violam o conhecimento adquirido por décadas e as pessoas passam a seguir sem questionamento.

Faça um exercício, procure descobrir algumas coisas que várias pessoas adotam, ensinam e recomendam que violam isso hoje em dia na área. Pode ser uma técnica um um tipo de tecnologia.

No link eu mostro que o princípio não é sobre não repetir algo, que pode ser uma técnica para alcançar o objetivo, que é o que importa. O nome Don't Repeat Yourself é um pouco misleading.

Isso vale para código ou até para a informação que você manipula, em certa medida. Aí você aprende técnicas para cumprir isso. E deixa de seguir "boas práticas" que dizem para fazer isso e aquilo, sem dizer porque deve fazer. Em alguns casos é para alcançar esse objetivo nobre.

Quando você tem informação redundante, espalhada fica mais difícil gerenciar. Como ter certeza qual é a correta e manter elas sempre sincronizadas? Já imaginou a dificuldade que é isso?

Então precisa estudar bastante isso, até para saber quando é um caso para violar e que trará mais vantagem que seguir, o que é raro.

Faz sentido para você?

Espero ter ajudado.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Obrigado por ler e contribuir com o comentario! Concordo, infelizmente no post nao consegui expressar tudo o que gostaria sobre o DRY pela limitação de caracteres. Mas todos precisam estar alertas e entender muito bem os fundamentos!! A essencia do principio é a frase que citei. Sobre o DRY já escrevi bastante no meu blog em dois artigos diferentes com assuntos relacionados. Segue link: https://thepragmaticengineer.hashnode.dev/discover-the-significance-of-the-dont-repeat-yourself-principle