पर तर्कों की संख्या को कम करना मैं "स्वच्छ कोड" पढ़ रहा हूं और मुझे अपने कुछ कार्यों (आमतौर पर कन्स्ट्रक्टर) को अपने अधिकतम 3 पैरामीटर में रखने के तरीके को समझने में परेशानी हो रही है।एक निर्माता
अक्सर मेरी वस्तुओं को काम करने के लिए बहुत सारी जानकारी की आवश्यकता होती है - क्या मुझे एक छोटा सा कन्स्ट्रक्टर बनाना चाहिए और फिर उन्हें सभी जानकारी देने के लिए म्यूटेटर फ़ंक्शंस का उपयोग करना चाहिए? यह सिर्फ एक बड़े कन्स्ट्रक्टर का उपयोग करने से बेहतर नहीं लगता है।
उदाहरण के तौर पर, मेरे पास "MovablePatch" कक्षा है। यह उपयोगकर्ता को विंडो में चारों ओर एक वर्ग खींचने देता है। इसे त्रिज्या, रंग, रेंडरर, प्रारंभिक संरचना, और दृश्यता सहित कई मानकों की आवश्यकता है। वर्तमान में मैं अपने जीयूआई से इन सब को इकट्ठा करने और फिर कहते हैं:
MovablePatch(int radius, Renderer* renderer, Color color, Position initial, bool visibility)
ये केवल चीजें हैं जो मैं इस वर्ग में जरूरत से कुछ हैं। क्या कोई सुझाव दे सकता है कि मैं इस जानकारी को कन्स्ट्रक्टर को पास करने के लिए कैसे पैकेज कर सकता हूं? मुझे कोई स्पष्ट "छोटे वर्गों में तोड़ने" दिखाई नहीं देता है।
बिल्डर पैटर्न को देखो। – Bashwork
क्या आपको उस गाइड लाइन का पालन करना है? अन्यथा मैं इसे अनदेखा कहूंगा जहां यह स्पष्ट नहीं है कि इसे कैसे लागू किया जाए। इमो यदि दिशानिर्देशों का पालन करने के लिए संशोधन अंतर्ज्ञानी नहीं हैं, तो यह सुनिश्चित करने के लिए कि यह दिशानिर्देशों का पालन नहीं किया जाता है, यह सुनिश्चित करने के लिए कोड को दोबारा करने के लिए आम तौर पर इसके लायक नहीं है। अनलिंटव समाधान के लिए जो आसानी से अधिक जटिल (और इसलिए बगप्रोन) कोड का कारण बन सकता है जिसमें बेहतर पठनीयता भी नहीं होती है (इसके लिए एक उदाहरण का उल्लेख किया गया छोटा कन्स्ट्रक्टर है जिसके बाद म्यूटेटर फ़ंक्शन कॉल या बिल्डर पैटर्न होता है, जो दोनों इसे आसान बनाते हैं कुछ मूल्य निर्धारित करना भूल जाओ)। – Grizzly
संबंधित गुणों के लिए एक सरल 'संरचना' का उपयोग करने के लिए पारित किया जाना चाहिए क्योंकि एक जन्म पैरामीटर मेरे जन्म से पहले किया गया है, मुझे पूरा यकीन है। – AJG85