मुझे लगता है कि आप कोड पुनरावृत्ति सिद्धांत को बहुत दूर ले जा रहे हैं। कोड पुनरावृत्ति से बचने के बिंदु के बारे में सोचो। बिंदु कोड की मात्रा को कम करना है जिसे तर्क में बदलाव होने पर जांचना पड़ता है, और स्पष्ट रूप से समान रूप से ब्लॉक किए गए फैक्टरिंग द्वारा समझ बढ़ाने के लिए।
पुनरावृत्ति से बचने के लिए फैक्टरिंग की गिरावट यह है कि यदि साझा ब्लॉकों में से एक को बदलना है, तो अब आपको और भी अधिक जटिल विरासत या मानक और गैर-मानक कार्यान्वयन के बीच स्विच करने की आवश्यकता है।
तो ध्यान से इस समानता के फैक्टरिंग द्वारा प्राप्त लाभ के खिलाफ दूसरों के बिना बदलते इन ब्लॉक में से एक के लिए तर्क की संभावना को ध्यान से तौलना । यदि एक कार्यान्वयन दूसरों से अलग हो सकता है तो आप कोड को दोहराते हुए बहुत बेहतर हो सकते हैं।
इस दोहराया कोड को बनाए रखने के दौरान, क्योंकि यह अधिक जटिल हो जाता है और आपका समस्या डोमेन अधिक परिभाषित हो जाता है, तो आप बार-बार, अब अधिक जटिल, लेकिन अधिक परिभाषित अनुभागों को भी कारक के लिए अधिक उपयुक्त पा सकते हैं।
मैं आमतौर पर टेक्स्ट-एडिटर को एक ही-नेस को कुछ समय के लिए बनाए रखने की कोशिश करता हूं, जब तक कि मैं यह नहीं देख सकता कि ऐसा कुछ जो दोहराए जाने वाले लगता है वह फैक्टरिंग के लायक है। मैं सिर्फ दोहराव रखता हूं, लेकिन मैं बाद में मिलान करने के लिए पाठ को आसान रखकर उस ब्लॉक के भविष्य की ओर अपनी नजर रखता हूं।
बहुत समय, एक ही-नेस, और संभावित फैक्टरिंग, वास्तविक, मकर, व्यावसायिक नियमों और अत्यधिक आश्रित, अक्सर मनमाने ढंग से तर्क के रूप में फैलने लगती है; जैसे कई सामान्य डेटाबेस कार्यान्वयन (ANSI_NULLS या कुछ ऐसे दिमाग में आते हैं) की विषमताओं से निपटने के लिए जोड़े जाते हैं; मजबूर एक मुड़ गड़बड़ में एक शुद्ध तर्क की तरह लग रहा था, उद्योग की स्थिति के साथ सामना करने पर उचित, रक्षात्मक निर्णय तर्क प्रदान करने की कोशिश कर रहा है।
यह मुझे लगता है कि अगर लोग यह जानने की कोशिश करते हैं कि आप क्या करने की कोशिश कर रहे हैं, तो हमारे पास Do1Then2If2False Do1IfTrueDo2 जैसे बेकार निर्माणों की पूरी लाइब्रेरी होगी।
यह अधिक जटिल और अधिक स्पष्ट है कि ब्लॉक इसे बदलने वाले वारंट में बदलने वाला नहीं है।
यह सॉफ्टवेयर है । आप वापस जा सकते हैं और एक जोड़े ब्लॉक को संपादित कर सकते हैं जो कि अभी एक ही हैं। 5 मिनट लगेंगे। और आप व्यर्थ फैक्टरिंग के घंटे बचा सकते हैं, और फिर व्यर्थ उत्तराधिकार और स्विचिंग विकास के घंटे अधिक, बस इसे छोड़कर, और यह सुनिश्चित कर सकते हैं कि आपके पास एक अच्छा, एंटी-आरएसआई कीबोर्ड है।