Chociaż nigdy nie dostarczałem niczego za pomocą Smalltalk, mój krótki czas na zabawie z nim zdecydowanie pozostawił swoje piętno. Jedynym sposobem na opisanie tego doświadczenia jest MVC tak, jak powinno być. Zasadniczo wszystkie ciężkie podnoszenie aplikacji odbywa się w obiektach biznesowych (lub modelu domeny, jeśli masz na to ochotę). Standardowe formanty są w jakiś sposób powiązane z obiektami biznesowymi. Na przykład pole tekstowe jest mapowane na pole obiektu (samo pole jest obiektem, więc łatwo to zrobić). Przycisk zostałby zmapowany na metodę. Wszystko to odbywa się za pomocą bardzo prostego i naturalnego API. Nie musimy myśleć o wiązaniu obiektów itp. To po prostu działa.
Jednak w wielu nowszych językach i interfejsach API musisz myśleć z zewnątrz. Najpierw w C ++ i MFC, a teraz w C # i WPF, Microsoft ma swój świat programistów uzależniony od konstruktorów GUI, w których tworzysz swoją aplikację, wdrażając procedury obsługi zdarzeń . Programowanie w Java Swing nie różni się tak bardzo, tylko ty piszesz kod, aby sam utworzyć instancję formantów w formularzu. W przypadku niektórych projektów może nawet nie istnieć model domeny - tylko programy obsługi zdarzeń. Byłem w tym modelu przez większość mojej kariery.
Każda droga zmusza cię do innego myślenia. Dzięki podejściu Smalltalk Twoja domena jest inteligentna, a GUI jest głupi. Przy domyślnym podejściu VisualStudio GUI jest inteligentny, a model domeny (jeśli istnieje) jest raczej anemiczny.
Wielu programistów, z którymi pracuję, widzi wartość w podejściu Smalltalk i próbuje podchodzić do tego podejścia w środowisku VisualStudio. WPF ma pewne funkcje dynamicznego wiązania, które to umożliwiają; ale są ograniczenia. Nieuchronnie część kodu należącego do modelu domeny kończy się na klasach GUI.
Więc w jaki sposób projektujesz / rozwijasz swój kod? Dlaczego?
- GUI pierwszy. Interakcja użytkownika jest najważniejsza.
- Domena najpierw. Muszę upewnić się, że system jest poprawny, zanim umieścimy na nim interfejs użytkownika.
Oba podejścia mają zalety i wady. Model domeny pasuje tam z kryształowymi katedrami i ciastem na niebie. GUI pasuje tam szybko i brudnie (czasem naprawdę brudno).
I dla dodatkowej premii: Jak upewnić się, że kod można utrzymać?