जबकि मैंने कभी भी स्मॉलटाक का उपयोग करके कुछ भी नहीं दिया है, इसके साथ खेलने का मेरा संक्षिप्त समय निश्चित रूप से अपनी छाप छोड़ गया है। अनुभव का वर्णन करने का एकमात्र तरीका एमवीसी है जिस तरह से यह होना चाहिए था। अनिवार्य रूप से, आपके आवेदन के लिए सभी भारी उठाने व्यवसाय की वस्तुओं (या यदि आप इच्छुक हैं तो डोमेन मॉडल) में किया जाता है। मानक नियंत्रण किसी तरह से व्यापारिक वस्तुओं के लिए बाध्य हैं। उदाहरण के लिए, एक टेक्स्ट बॉक्स को ऑब्जेक्ट के क्षेत्र में मैप किया जाता है (फ़ील्ड स्वयं एक ऑब्जेक्ट है इसलिए ऐसा करना आसान है)। एक बटन एक विधि के लिए मैप किया जाएगा। यह सब एक बहुत ही सरल और प्राकृतिक एपीआई के साथ किया जाता है। हमें वस्तुओं को बांधने के बारे में सोचने की ज़रूरत नहीं है, यह सिर्फ काम करता है।
फिर भी, कई नई भाषाओं और API में आपको बाहर से सोचने के लिए मजबूर किया जाता है। पहले C ++ और MFC के साथ, और अब C # और WPF के साथ, Microsoft ने यह जान लिया है कि विकासकर्ता GUI बिल्डरों पर झुका हुआ है जहाँ आप इवेंट हैंडलर लागू करने के लिए अपना आवेदन बनाते हैं। । जावा स्विंग विकास इतना अलग नहीं है, केवल आप स्वयं फॉर्म पर नियंत्रणों को त्वरित करने के लिए कोड लिख रहे हैं। कुछ परियोजनाओं के लिए, कभी भी एक डोमेन मॉडल नहीं हो सकता है - सिर्फ इवेंट हैंडलर। मैं अपने अधिकांश कारर के लिए इस मॉडल में और उसके आसपास रहा हूं।
हर तरह से आपको अलग तरीके से सोचने पर मजबूर करता है। Smalltalk दृष्टिकोण के साथ, आपका डोमेन स्मार्ट है जबकि आपका GUI गूंगा है। डिफ़ॉल्ट VisualStudio दृष्टिकोण के साथ, आपका GUI स्मार्ट है जबकि आपका डोमेन मॉडल (यदि यह मौजूद है) बल्कि एनीमिक है।
कई डेवलपर्स जो कि मैं स्मॉलटाक दृष्टिकोण में मूल्य देखता हूं, और विज़ुअलस्टडियो वातावरण में उस दृष्टिकोण को ढालने की कोशिश करता हूं। WPF में कुछ गतिशील बाध्यकारी विशेषताएं हैं जो इसे संभव बनाती हैं; लेकिन सीमाएँ हैं। अनिवार्य रूप से डोमेन मॉडल में शामिल कुछ कोड जीयूआई कक्षाओं में समाप्त होता है।
तो, आप अपना कोड किस तरीके से डिजाइन / विकसित करते हैं? क्यों?
- पहले जीयूआई। उपयोगकर्ता सहभागिता सर्वोपरि है।
- डोमेन पहले। मुझे यह सुनिश्चित करने की आवश्यकता है कि सिस्टम को सही करने से पहले हम उस पर एक यूआई डाल दें।
किसी भी दृष्टिकोण के लिए पेशेवरों और विपक्ष हैं। डोमेन मॉडल वहाँ क्रिस्टल कैथेड्रल और आकाश में पाई के साथ फिट बैठता है। जीयूआई वहाँ त्वरित और गंदे (कभी-कभी वास्तव में गंदे) के साथ फिट बैठता है।
और एक अतिरिक्त बोनस के लिए: आप कैसे सुनिश्चित करते हैं कि कोड बनाए रखने योग्य है?