मैं इस समय एक ऐसे इंटरफ़ेस के बारे में सोच रहा हूँ जो मैं लिख रहा हूँ। इस वर्ग में एक चरित्र के लिए शैलियों शामिल हैं, उदाहरण के लिए कि क्या चरित्र बोल्ड, इटैलिक, रेखांकित है, आदि मैं दो दिनों से अपने आप से बहस कर रहा हूं कि क्या मुझे उन तरीकों के लिए गेटर्स / सेटर या तार्किक नामों का उपयोग करना चाहिए जो मूल्यों को बदलते हैं इन शैलियों। जबकि मैं तार्किक नामों को पसंद करता हूं, इसका मतलब है कि कोड लिखना जो उतना कुशल नहीं है और उतना तार्किक नहीं है। मैं आपको एक उदाहरण देता हूं।
मैं एक वर्ग मिल गया है CharacterStyles
जो सदस्य चर है bold
, italic
, underline
(और कुछ अन्य, लेकिन मैं इसे सरल रखने के लिए उन्हें बाहर छोड़ देंगे)। कार्यक्रम के अन्य हिस्सों को इन चरों तक पहुंचने की अनुमति देने का सबसे आसान तरीका, गेट्टर / सेटर विधियों को लिखना होगा, ताकि आप कर सकें styles.setBold(true)
और styles.setItalic(false)
।
लेकिन मुझे यह पसंद नहीं है। केवल इसलिए नहीं कि बहुत सारे लोग कहते हैं कि गेटर्स / सेटर इनकैप्सुलेशन को तोड़ते हैं (क्या यह वास्तव में इतना बुरा है?), लेकिन ज्यादातर इसलिए कि यह मुझे तर्कसंगत नहीं लगता। मैं एक विधि के माध्यम से एक चरित्र की शैली की अपेक्षा करता हूं, styles.format("bold", true)
या ऐसा कुछ, लेकिन इन सभी विधियों के माध्यम से नहीं।
हालांकि एक समस्या है। चूँकि आप C ++ में स्ट्रिंग के कंटेंट द्वारा ऑब्जेक्ट मेंबर वेरिएबल को एक्सेस नहीं कर सकते, इसलिए मुझे या तो सभी शैलियों के लिए एक बड़ा इफ-स्टेटमेंट / स्विच कंटेनर लिखना होगा, या मुझे शैलियों को एक सहयोगी सरणी में स्टोर करना होगा ( नक्शा)।
मैं समझ नहीं पा रहा हूं कि सबसे अच्छा तरीका क्या है। एक पल मुझे लगता है कि मुझे गेटर्स / सेटर लिखना चाहिए और अगले ही पल मैं दूसरे रास्ते की ओर झुक गया। मेरा सवाल है: आप क्या करेंगे? और आप ऐसा क्यों करेंगे?
bold
सेट के साथ एक कैरेक्टरटाइल्स है true
और दूसरे वेरिएबल्स अपरिभाषित हैं, तो दूसरे वेरिएबल्स के लिए गेट्टर मेथड्स को पैरेंट स्टाइल (जो दूसरी प्रॉपर्टी में स्टोर हो जाती है) की वैल्यू वापस कर देनी चाहिए, जबकि bold
प्रॉपर्टी के लिए गेट्टर वापस आ जाना चाहिए true
। एक नाम की तरह कुछ अन्य चीजें हैं और जिस तरह से यह इंटरफ़ेस में भी प्रदर्शित किया गया है।