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).