Obwohl ich mit Smalltalk noch nie etwas geliefert habe, hat meine kurze Spielzeit definitiv Spuren hinterlassen. Die einzige Möglichkeit, die Erfahrung zu beschreiben, ist MVC, wie es sein sollte. Im Wesentlichen erfolgt das Heben von Lasten für Ihre Anwendung in den Geschäftsobjekten (oder im Domänenmodell, wenn Sie dazu geneigt sind). Die Standardsteuerelemente sind in irgendeiner Weise an die Geschäftsobjekte gebunden. Beispielsweise wird ein Textfeld dem Feld eines Objekts zugeordnet (das Feld selbst ist ein Objekt, so dass dies einfach ist). Eine Schaltfläche würde einer Methode zugeordnet. Dies geschieht alles mit einer sehr einfachen und natürlichen API. Wir müssen nicht über das Binden von Objekten usw. nachdenken. Es funktioniert einfach.
In vielen neueren Sprachen und APIs sind Sie jedoch gezwungen, von außen nach innen zu denken. Zuerst mit C ++ und MFC und jetzt mit C # und WPF hat Microsoft seine Entwicklerwelt an GUI-Builder gebunden, in denen Sie Ihre Anwendung durch die Implementierung von Ereignishandlern erstellen . Java Swing-Entwicklung ist nicht so unterschiedlich, nur Sie schreiben den Code, um die Steuerelemente auf dem Formular selbst zu instanziieren. Für einige Projekte gibt es möglicherweise nicht einmal ein Domain-Modell - nur Event-Handler. Ich habe in und um dieses Modell für die meisten meiner Karriere gewesen.
Jeder Weg zwingt dich, anders zu denken. Mit dem Smalltalk-Ansatz ist Ihre Domain intelligent, während Ihre GUI dumm ist. Bei der Standardmethode von VisualStudio ist Ihre GUI intelligent, während Ihr Domänenmodell (sofern vorhanden) eher anämisch ist.
Viele Entwickler, mit denen ich arbeite, sehen Wert im Smalltalk-Ansatz und versuchen, diesen Ansatz in die VisualStudio-Umgebung zu integrieren. WPF verfügt über einige dynamische Bindungsfunktionen, die dies ermöglichen. aber es gibt Einschränkungen. Zwangsläufig gelangt Code, der zum Domänenmodell gehört, in die GUI-Klassen.
Wie entwerfen / entwickeln Sie Ihren Code? Warum?
- GUI zuerst. Benutzerinteraktion ist von größter Bedeutung.
- Domain zuerst. Ich muss sicherstellen, dass das System korrekt ist, bevor wir eine Benutzeroberfläche darauf setzen.
Für beide Ansätze gibt es Vor- und Nachteile. Das Domain-Modell passt dort mit Kristallkathedralen und Pie in the Sky hinein. GUI passt da schnell rein und versaut (manchmal richtig versaut).
Und für einen zusätzlichen Bonus: Wie stellen Sie sicher, dass der Code wartbar ist?