2010-05-09 9 views
7

लेखन कार्यों में मेरा दिमाग हमेशा कुछ मिलीसेकंड खर्च करता है ताकि यह सुनिश्चित किया जा सके कि दिए गए फ़ंक्शन के लिए पैरामीटर का कौन सा क्रम सबसे अच्छा होगा।फ़ंक्शन में पैरामीटर के क्रम के लिए सम्मेलन

मैं लिखना चाहिए:

public Comment AddComment(long userID, string title, string text) 

या शायद:

public Comment AddComment(string title, string text, long userID) 

क्यों नहीं:

public Comment AddComment(string title, long userID, string text) 

आप जब अपने कार्यों के लिए मानकों को आदेश देने के लिए किसी भी नियमों का पालन करते हैं? आप कौन सा पैरामीटर पहले रखेंगे और कौन सा पालन करेगा?

+1

अच्छा सवाल है, लेकिन जिस तरह से आप इसे phrasing कर रहे हैं, यह एक खुली समाप्ति चर्चा की तरह लगता है ... क्या आप वास्तव में (या आप होंगे) पूछ रहे हैं कि पैरामीटर ऑर्डरिंग के लिए एक स्थापित सम्मेलन है या नहीं? यदि हां, तो कौन सी भाषा/पर्यावरण? पूंजीकरण की तरह, इस तरह की चीज भाषाओं के बीच अलग-अलग है। –

उत्तर

3

केवल 3 नियम नहीं हैं मैं आमतौर पर लागू होते हैं: एक भाषा एक एकल पैरामीटर के रूप में एक हैश/मानचित्र/साहचर्य सरणी गुजर अनुमति देता है

  • हैं, कि पारित करने के लिए चुनते हैं की कोशिश करो। यह विशेष रूप से> = 3 पैरामीटर के साथ विधियों के लिए उपयोगी है, विशेष रूप से जब वे समान पैरामीटर नेस्टेड फ़ंक्शन कॉल में पास किए जाएंगे।

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

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

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

  • अन्यथा, जो भी लॉजिकल ग्रुपिंग सबसे अधिक पठनीय/रखरखाव में उन्हें ऑर्डर करें।

    यह थोड़ा सा व्यक्तिपरक हो सकता है - उदा। अगले/पिछले वजन/ऊंचाई का आदेश next_weight,next_height, prev_weight, prev_height या next_weight, prev_weight, next_height, prev_height समान रूप से मान्य किया जा सकता है। फिर, 3 मुख्य विचार आपके लिए पठनीयता/तार्किकता, और रखरखाव में आसानी हैं।

    जहां तक ​​पठनीयता है, आप उन्हें टाइप करके या अर्थ के अनुसार आदेश दे सकते हैं।

    जहां तक ​​"तार्किकता" है, आप उन्हें अर्थ के अनुसार आदेश दे सकते हैं (उदाहरण के लिए सभी "अगली" एक साथ, या सभी ऊंचाइयों को समूह), या किसी अन्य आदेश द्वारा लगाया गया - उदाहरण के लिए, संबंधित डेटाबेस तालिका में कॉलम ऑर्डर, या एक जीयूआई में फील्ड ऑर्डर (बदतर, क्योंकि यह बदलने की संभावना है)।

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

1

व्यक्तिगत रूप से, मैं पहला ऐसा करूँगा क्योंकि यह वही है जो मैं जीयूआई में होगा: उपयोगकर्ता, शीर्षक, पाठ।

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

संबंधित मुद्दे