2010-04-12 4 views
6

में ओओडी पर एसओए सिद्धांतों का उपयोग करना हमारे आर्किटेक्ट ने हमारे कोडबेस में एसओए तकनीकों का उपयोग करने के बारे में बात की है, यहां तक ​​कि इंटरफेस पर भी जो वास्तव में सेवा के रूप में होस्ट नहीं किए जाते हैं। उनके अनुरोधों में से एक यह है कि हम अपने इंटरफ़ेस विधियों को डिज़ाइन करते हैं ताकि हम वास्तविक कार्यान्वयन के बारे में कोई धारणा न करें। तो अगर हमारे पास ऐसी कोई विधि है जो किसी ऑब्जेक्ट में ले जाती है और उस ऑब्जेक्ट पर किसी संपत्ति को अपडेट करने की आवश्यकता होती है, तो हमें स्पष्ट रूप से विधि से ऑब्जेक्ट को वापस करने की आवश्यकता होती है। अन्यथा हम इस तथ्य पर भरोसा करेंगे कि कुछ संदर्भ प्रकार है और सी # डिफ़ॉल्ट रूप से संदर्भ प्रकार पर गुणों को अपडेट करने की अनुमति देता है।गैर-सेवा कोड

तो:

public void SaveSomething(Something something) 
{ 
    //save to database 

    something.SomethingID = 42; 
} 

हो जाता है:

public Something SaveSomething(Something something) 
{ 
    //save to database 

    return new Something 
    { 
    //all properties here including new primary key from db 
    }; 
} 

मैं वास्तव में इस दृष्टिकोण का लाभ आसपास मेरे सिर प्राप्त कर सकते हैं और अगर कोई मदद कर सकता है सोच रहा था?

क्या यह एक आम दृष्टिकोण है?

उत्तर

1

मुझे लगता है कि आपका आर्किटेक्ट कम कोड प्रभाव रखने के लिए आपके कोड को प्राप्त करने का प्रयास कर रहा है। आपके विशिष्ट उदाहरण में, कोई लाभ नहीं है। कई मामलों में, आपके आर्किटेक्ट सही होंगे, और आप साइड इफेक्ट्स के बिना अपने आवेदन के बड़े हिस्सों को डिज़ाइन कर सकते हैं, लेकिन ऐसा कोई स्थान नहीं हो सकता है जो डेटाबेस के विरुद्ध संचालन के दौरान होता है।

आपको क्या करना है कार्यशील प्रोग्रामिंग से परिचित होना, और अपने वास्तुकार के साथ इस तरह के मामलों के बारे में अपनी बातचीत के लिए तैयार करना। याद रखें कि उसके इरादे सबसे अच्छे हैं, लेकिन विशिष्ट मामले आपके डोमेन हैं। इस मामले में, साइड इफेक्ट बिंदु है, और संभवतः आप सफलता का संकेत देने के लिए एक वापसी प्रकार की बूल चाहते हैं, लेकिन एक नए प्रकार को वापस करने से कोई अर्थ नहीं आता है।

अपने आर्किटेक्ट को दिखाएं कि आप सीमित साइड इफेक्ट्स को समझते हैं, लेकिन कुछ साइड इफेक्ट्स को अनुमति दी जानी चाहिए (डेटाबेस, यूआई, नेटवर्क एक्सेस, एट कैटेरा), और आपको लगता है कि वह आपके साथ सहमत होगा। वांछित साइड इफेक्ट्स को अलग करने और उन्हें स्पष्ट करने के लिए एक रास्ता खोजें, और इससे आपके मामले में मदद मिलेगी। यदि आप सहयोग की भावना में (अपनी योजना में छेद शूट करने की कोशिश नहीं कर रहे हैं) तो आपका आर्किटेक्ट शायद इसकी सराहना करेगा।

एफपी के लिए

एक जोड़े संसाधन:

  1. A great tutorial on Functional Programming
  2. Wikipedia's entry on Functional programming

गुड लक, मुझे आशा है कि इस मदद करता है।