Anche se non ho mai consegnato nulla usando Smalltalk, il mio breve tempo trascorso a giocare con esso ha definitivamente lasciato il segno. L'unico modo per descrivere l'esperienza è MVC come doveva essere. In sostanza, tutto il lavoro pesante per la tua applicazione è fatto negli oggetti business (o nel modello di dominio se sei così propenso). I controlli standard sono legati agli oggetti business in qualche modo. Ad esempio, una casella di testo è mappata sul campo di un oggetto (il campo stesso è un oggetto, quindi è facile da fare). Un pulsante sarebbe mappato su un metodo. Questo è tutto fatto con un'API molto semplice e naturale. Non dobbiamo pensare agli oggetti vincolanti, ecc. Funziona.
Eppure, in molti linguaggi e API più recenti sei costretto a pensare dall'esterno. Prima con C ++ e MFC, e ora con C # e WPF, Microsoft ha ottenuto il suo mondo degli sviluppatori collegato ai costruttori GUI in cui costruisci la tua applicazione implementazione di gestori di eventi. Lo sviluppo di Java Swing non è così diverso, solo tu stai scrivendo il codice per creare istantaneamente i controlli sul modulo stesso. Per alcuni progetti, potrebbe non esserci nemmeno un modello di dominio: solo gestori di eventi. Sono stato dentro e intorno a questo modello per la maggior parte della mia carriera.
Ogni modo ti costringe a pensare in modo diverso. Con l'approccio Smalltalk, il tuo dominio è intelligente mentre la tua interfaccia grafica è stupida. Con l'approccio predefinito di VisualStudio, la tua GUI è intelligente mentre il tuo modello di dominio (se esiste) è piuttosto anemico.
Molti sviluppatori con cui lavoro vedono valore nell'approccio Smalltalk e provano a calzare questo approccio nell'ambiente VisualStudio. WPF ha alcune caratteristiche di associazione dinamica che lo rendono possibile; ma ci sono limitazioni. Inevitabilmente, il codice che appartiene al modello di dominio finisce nelle classi della GUI.
Quindi, in che modo progetta / sviluppa il tuo codice? Perché?
- prima la GUI. L'interazione dell'utente è fondamentale.
- Dominio prima. Devo assicurarmi che il sistema sia corretto prima di inserire un'interfaccia utente.
Ci sono pro e contro per entrambi gli approcci. Il modello di dominio si adatta a lì con cattedrali di cristallo e torta nel cielo. La GUI si inserisce con rapidità e sporcizia (a volte veramente sporca).
E per un ulteriore vantaggio: come ti assicuri che il codice sia gestibile?