usability - Explicit API methods vs. generalised parameter-based API methods -


ग्राहक-सुलभ API परिभाषित करते समय, निम्नलिखित के बीच पसंदीदा उद्योग अभ्यास क्या है:

< स्पष्ट एपीआई विधियों का एक समूह परिभाषित करना, प्रत्येक एक बहुत ही संकीर्ण और विशिष्ट उद्देश्य के साथ, उदाहरण के लिए:

  SetUserName & lt; name & gt; SetUserAge & lt; उम्र & gt; SetUserAddress & lt; पता & gt;  सामान्यीकृत  पैरामीटर-आधारित API विधियों के एक सेट को परिभाषित करना, उदाहरण के लिए:  
  

कोड> सेटउज़र एट्रिब्यूट & lt; विशेषता & gt; Enum विशेषता {नाम, आयु, पता}

मेरी राय:

(ए) के पक्ष में

बूलियन-आधारित तरीकों (जैसे, सक्षमएफ़ू) के लिए मैं निश्चित रूप से विकल्प का एहसास करूँगा (ए) क्योंकि इरादे अधिक स्पष्ट हैं, भविष्य में विस्तार की आवश्यकता होने की संभावना कम है, और यह अधिक पठनीय कोड बनाता है। / P>

उदाहरण के लिए, EnableDisableFoo नामक एक विधि है जो बूलियन पैरामीटर को इंगित करता है कि सक्षम या अक्षम करना बहुत स्पष्ट नहीं होगा, और न ही एक संयोजन वाला उद्देश्य है।

यह जहां कई विकल्प हैं इस समस्या को और अधिक जटिल हो जाता है।

के पक्ष में (बी)

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

अन्य विचार

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

क्या किसी के पास इस पर कोई विचार है?

मैं व्यक्तिगत रूप से (ए) के लिए बहस करेगा, क्योंकि हमारा लक्ष्य "स्थिर" कोड को यथासंभव सटीक और विश्वसनीय बनाना है।

सामान्यीकृत फॉर्म का उपयोग करके, हम रनटाइम त्रुटियों के लिए एक जोखिम शुरू कर रहे हैं। उदाहरण के लिए, मैं वास्तव में एक स्ट्रिंग, आदि के मूल्य के साथ टाइप युग का एक विशेषता सेट कर सकता हूं।

यह प्रयोग करने और इनटिंग लौटने के बजाय एंमान या स्पष्ट प्रकार के उपयोग के लिए तर्क के समान है पुराने सी स्टाइल में, जैसा कि आपको एक और स्तर का आश्वासन मिलता है।

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


Comments