Smalltalk kullanarak hiçbir şey teslim etmeme rağmen, onunla oynadığım kısa zaman kesinlikle izini bıraktı. Deneyimi tanımlamanın tek yolu MVC'dir. Esasen, uygulamanız için tüm ağır kaldırma iş nesnelerinde (veya çok eğimli iseniz etki alanı modelinde) yapılır. Standart kontroller bir şekilde iş nesnelerine bağlıdır. Örneğin, bir metin kutusu bir nesnenin alanıyla eşlenir (alanın kendisi bir nesnedir, bu nedenle yapılması kolaydır). Bir düğme bir yönteme eşlenir. Tüm bunlar çok basit ve doğal bir API ile yapılır. Bağlama nesneleri vb. Hakkında düşünmek zorunda değiliz. Sadece işe yarıyor.
Yine de, birçok yeni dilde ve API'da dışarıdan düşünmek zorundasınız. İlk olarak C ++ ve MFC ile ve şimdi C # ve WPF ile Microsoft, olay işleyicilerini uygulayarak uygulamanızı oluşturduğunuz GUI oluşturucularına bağlı geliştirici dünyasına kavuştu . Java Swing geliştirme çok farklı değil, sadece formdaki denetimleri kendiniz başlatmak için kodu yazıyorsunuz. Bazı projeler için hiçbir zaman bir etki alanı modeli olmayabilir - yalnızca olay işleyicileri. Kariyerimin çoğu için bu modelin içinde ve çevresinde bulundum.
Her yol sizi farklı düşünmeye zorlar. Smalltalk yaklaşımıyla, GUI'niz aptalken alan adınız akıllıdır. Varsayılan VisualStudio yaklaşımıyla, etki alanı modeliniz (varsa) oldukça anemikken GUI'niz akıllıdır.
Birlikte çalıştığım birçok geliştirici Smalltalk yaklaşımında değer görüyor ve VisualStudio ortamına yaklaşmayı deniyor. WPF'nin bunu mümkün kılan bazı dinamik bağlama özellikleri vardır; ancak sınırlamalar vardır. Kaçınılmaz olarak, etki alanı modeline ait bazı kodlar GUI sınıflarında son bulur.
Peki, kodunuzu hangi yolla tasarlıyorsunuz / geliştiriyorsunuz? Neden?
- Önce GUI. Kullanıcı etkileşimi çok önemlidir.
- Önce alan adı. Bir kullanıcı arayüzü koymadan önce sistemin doğru olduğundan emin olmalıyım.
Her iki yaklaşım için de artıları ve eksileri var. Etki alanı modeli, gökyüzünde kristal katedraller ve turta ile uyuyor. GUI orada hızlı ve kirli (bazen gerçekten kirli) ile uyuyor.
Ek bir bonus için: Kodun korunabilir olduğundan nasıl emin olabilirsiniz?