Sì, sì ho
Sono rimasto zitto su questo argomento da molto tempo; è il momento di parlare.
- Qualcuno ha provato ad applicare questo concetto alla progettazione di oggetti?
Sì. Ho lavorato per formalizzare la normalizzazione degli oggetti (e quindi la sottostante teoria orientata agli oggetti) per oltre 20 anni.
Comprendendo 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 ottenute siano state le "armi segrete" delle mie capacità di progettazione, analisi e refactoring.
Non ne ho parlato pubblicamente prima di questo perché ho pensato che alla fine avrei avuto il tempo di finire la ricerca - e di produrre gli strumenti impliciti - me stesso.
Ma sono giunto alla conclusione che con tutto il resto della mia vita che è più importante, più divertente e / o più redditizio, non avrò tempo per finire la ricerca da solo. Mai. C'è anche la possibilità significativa che io semplicemente non abbia le basi teoriche CS necessarie per completare il lavoro da solo.
Ho chiesto all'università locale di sponsorizzare un dottorando o due se vogliono prendere la causa, ma purtroppo la nostra università locale non insegna una base adeguata nella programmazione della semantica del linguaggio.
Ci sono state alcune ricerche interessanti in questo settore, ma tutto ciò - ne sono a conoscenza - non è stato all'altezza. O assume erroneamente che, poiché la normalizzazione deriva da uno sfondo relazionale, non si applica ai modelli orientati agli oggetti, o presuppone che la normalizzazione si applichi solo ai dati definiti dagli oggetti. Tuttavia, ci sono alcuni progetti near-miss molto interessanti ...
Le cose davvero interessanti accadono quando applichi la normalizzazione al codice - che direi che è il fondamento di tutti i refactoring .
Quindi ora sto pensando che la cosa migliore da fare sia far uscire la voce, forse chiedendo di parlare al DevDays 2011 a Washington, e scoprire se c'è una comunità così eccitata da questa roba come me.
Ecco un'anteprima: la normalizzazione è il processo per rendere qualcosa di minimo e non ridondante. Il principio "Non ripeterti" (DRY) della programmazione orientata agli oggetti è quindi una chiara manifestazione degli obiettivi della normalizzazione. Credo di poter dimostrare che tutti i ben noti principi di progettazione / programmazione / refactoring orientati agli oggetti sono la conseguenza logica della normalizzazione dell'oggetto. Penso di poter mostrare anche che ci sono cose più interessanti che possono essere fatte con i sistemi in Object Normal Form (ONF) piuttosto che con il refactoring.