लाइब्रेरी/उपयोगिता को कॉन्फ़िगर करने के लिए सी एपीआई डिज़ाइन करते समय, मेरे पास एक सहकर्मी होता है जो सभी कॉन्फ़िगरेशन पैरामीटर को 1 फ़ंक्शन कॉल में लंप करना पसंद करता है। उदाहरण के लिए:सी कॉन्फ़िगरेशन API
int set_diagnostic_email_config(char *to_address,
bool include_timestamp,
bool send_for_crashes,
bool send_daily_status,
bool send_on_event1,
bool send_on_event2)
ऐसा ही एक "मिल" समारोह कई मापदंडों के साथ मौजूद है .. इस विधि का मुख्य लाभ यह है कि अगर किसी को एक नया विकल्प, कहते हैं जैसे, "bool send_on_event3", तो क्योंकि प्रोटोटाइप आप बदल है इस फंक्शन कॉल का उपयोग हर जगह अपडेट करने के लिए मजबूर किया जाता है (माना जाता है कि वहां कई जगहें हैं जहां लोग इसे कॉल करते हैं)। आवश्यकतानुसार
int get_diagnostic_email_config(struct email_config *p_config);
int set_diagnostic_email_config(struct email_config *p_config);
जहां सिर्फ संरचना तत्वों को परिवर्तित:
मैं की तर्ज पर कुछ पसंद करते हैं। लेकिन ... अगर कोई ईमेल_कॉन्फिग "संरचना को अपडेट करता है तो यह लोगों को उन सभी स्थानों को अपडेट करने के लिए मजबूर नहीं करता है जहां यह उपयोग किया जाता है (भले ही हम अक्सर .. ..) इसके अलावा मेरे सहकर्मी शिकायत करते हैं कि अगर कोई प्रारंभ करने की कोशिश करता है हाथ से "email_config", फिर यदि चीजें बाद में जुड़ जाती हैं तो उन नए फ़ील्ड को कोई चेतावनी के साथ अनियंत्रित किया जाएगा।
क्या कोई मजबूत सहमति है कि किस विधि को प्राथमिकता दी जाती है? या शायद एक और विकल्प है जो मुझे याद आ रहा है?
+1। उत्कृष्ट सलाह। – DevSolar
+1 मूल रूप से यह ओओपी है - परिवर्तनों को प्रबंधित करना आसान है, सफाई के प्रारंभ में प्रारंभ करने के लिए राज्य - कन्स्ट्रक्टर/विनाशक के साथ कार्यान्वयन रखें – stefanB
धन्यवाद! मुझे विशेष रूप से CONFIG_MAGIC विचार पसंद है। – Will