Sim, sim eu tenho
Fiquei quieto sobre esse assunto por um longo tempo; é hora de falar.
- Alguém já tentou aplicar esse conceito ao design de objetos?
Sim. Trabalho na formalização da normalização de objetos (e, portanto, da teoria orientada a objetos subjacente) há mais de 20 anos.
Ao perceber que dados e código são intercambiáveis, pelo menos em teoria. Isso significa que os princípios de normalização e as operações relacionais podem se aplicar ao código e aos dados.
Até agora, funcionou muito bem - acredito que as idéias obtidas foram as "armas secretas" de minhas habilidades de design, análise e refatoração.
Eu não disse nada sobre isso publicamente antes disso, porque achei que eventualmente teria tempo para concluir a pesquisa - e produzir as ferramentas implícitas - eu mesmo.
Mas cheguei à conclusão de que, com tudo o mais acontecendo na minha vida que é mais importante, mais divertido e / ou mais lucrativo, não terei tempo para terminar a pesquisa. Sempre. Há também a possibilidade significativa de que eu simplesmente não possua a base teórica necessária para concluir o trabalho sozinha.
Eu perguntei na universidade local sobre o patrocínio de um ou dois candidatos a PhD, se eles gostariam de abordar a causa, mas, infelizmente, a nossa universidade local não ensina uma base adequada na semântica da linguagem de programação.
Houve alguma pesquisa interessante nessa área, mas tudo - que eu sei - ficou aquém do esperado. Ou assume incorretamente que, como a normalização vem de um fundo relacional, ela não se aplica a modelos orientados a objetos, ou assume que a normalização se aplica apenas aos dados definidos pelos objetos. No entanto, existem alguns projetos near-miss muito interessantes ...
O material realmente interessante acontece quando você aplica a normalização ao código - o que eu argumentaria ser a base de toda refatoração .
Então agora estou pensando que a melhor coisa a fazer é divulgar, talvez pedindo para falar no DevDays 2011 em DC, e descobrir se há uma comunidade tão empolgada com essas coisas quanto eu.
Aqui está uma prévia: Normalização é o processo de tornar algo mínimo e não redundante. O princípio Não se repita (DRY) da programação orientada a objetos é, portanto, uma manifestação clara dos objetivos da normalização. Acredito que posso mostrar que todos os conhecidos princípios de design / programação / refatoração orientada a objetos são a consequência lógica da normalização de objetos. Eu acho que também posso mostrar que há coisas mais interessantes que podem ser feitas com sistemas no Object Normal Form (ONF) do que apenas refatorar.