Sì Sì Sì
Ho taciuto su questo argomento per molto tempo; è tempo di parlare.
- Qualcuno ha provato ad applicare questo concetto alla progettazione di oggetti?
Sì. Ho lavorato sulla formalizzazione della normalizzazione degli oggetti (e quindi della teoria orientata agli oggetti sottostante) per oltre 20 anni.
Rendendosi conto che i dati e il codice sono intercambiabili, almeno in teoria. Ciò significa che i principi di normalizzazione e le operazioni relazionali possono essere applicati sia al codice che ai dati.
Finora ha funzionato abbastanza bene - credo che le intuizioni acquisite siano state le "armi segrete" delle mie capacità di progettazione, analisi e refactoring.
Non ho detto nulla pubblicamente prima di questo perché ho pensato che alla fine avrei avuto il tempo di finire la ricerca - e produrre gli strumenti impliciti - me stesso.
Ma sono giunto alla conclusione che con tutto quello che succede nella mia vita che è più importante, più divertente e / o più redditizio, non avrò il tempo di finire la ricerca da solo. Mai. C'è anche la significativa possibilità che semplicemente non ho le basi teoriche CS necessarie per completare il lavoro da solo.
Ho chiesto all'università locale di sponsorizzare uno o due dottorandi se vorrebbero occuparsi della causa, ma purtroppo la nostra università locale non insegna una base adeguata nella semantica del linguaggio di programmazione.
C'è stata qualche ricerca interessante in questo settore, ma tutto ciò - di cui sono a conoscenza - non è stato all'altezza. O presuppone erroneamente che, poiché la normalizzazione proviene da uno sfondo relazionale, non si applica ai modelli orientati agli oggetti, oppure presuppone che la normalizzazione si applichi solo ai dati definiti dagli oggetti. Ci sono alcuni progetti quasi-miss molto interessanti comunque ...
Le cose veramente interessanti accadono quando applichi la normalizzazione al codice - che direi sia il fondamento di tutto il refactoring .
Quindi ora sto pensando che la cosa migliore da fare sia spargere la voce, magari chiedendo di parlare al DevDays 2011 a Washington, e scoprire se c'è una comunità entusiasta di questa roba come me.
Ecco un'anteprima: la normalizzazione è il processo per rendere qualcosa di minimo e non ridondante. Il principio di non ripetersi (DRY) della programmazione orientata agli oggetti è quindi una chiara manifestazione degli obiettivi della normalizzazione. Credo di poter dimostrare che tutti i noti principi di progettazione / programmazione / refactoring orientati agli oggetti sono la logica conseguenza della normalizzazione degli oggetti. Penso di poter anche dimostrare che ci sono cose più interessanti che si possono fare con i sistemi in Object Normal Form (ONF) oltre al semplice refactoring.