2013-02-14 107 views
18

क्या किसी को ईश्वर-वस्तु को दोबारा करने का सबसे अच्छा तरीका पता है?आप भगवान वर्ग को कैसे दोहराते हैं?

इसे कई छोटे वर्गों में तोड़ने जितना आसान नहीं है, क्योंकि एक उच्च विधि युग्मन है। अगर मैं एक विधि खींचता हूं, तो मैं आम तौर पर हर दूसरी विधि को खींचता हूं।

+2

यह उत्तर देना असंभव लगता है। यूनिट परीक्षण पर – jahroy

उत्तर

30

यह जेंगा की तरह है। आपको धैर्य और स्थिर हाथ की आवश्यकता होगी, अन्यथा आपको स्क्रैच से सबकुछ फिर से बनाना होगा। जो बुरा नहीं है, प्रति से - कभी-कभी किसी को कोड फेंकने की जरूरत होती है।

अन्य सलाह: क्या डेटा पर इस विधि काम करता है:

  • तरीकों बाहर खींच से पहले सोचते हैं? इसमें क्या ज़िम्मेदारी है?
  • पहले भगवान वर्ग के इंटरफ़ेस को बनाए रखने और नए निकाले गए वर्गों को कॉल करने का प्रयास करें। अंत में भगवान वर्ग अपने तर्क के बिना एक शुद्ध मुखौटा होना चाहिए। तो फिर तुम यह सुविधा के लिए रख सकते हैं या इसे फेंक और नए वर्गों केवल
  • यूनिट टेस्ट मदद का उपयोग करने के लिए शुरू कर सकते हैं: यह निकालने से पहले प्रत्येक विधि के लिए परीक्षण लिखने आप कार्यक्षमता नहीं टूटते
+0

अच्छी सलाह। लेकिन मुझे वास्तव में असंगत तरीकों का वास्तव में एक तरीका चाहिए। समस्या का क्रूक्स –

+0

है जो इस मामले पर भारी निर्भर करता है। दुर्भाग्य से (कोई भी "एप्राइपियेट [रीफैक्टरिंग पैटर्न] का उपयोग करें (http://www.refactoring.com/catalog/index.html)" के अलावा, कोई भी फिट नहीं है। –

+2

मुझे इसे एक मुखौटा में बदलने का विचार पसंद है। इससे जेंगा के टुकड़े एक दूसरे का समर्थन करने में मदद मिलती है, लेकिन रिफैक्टरिंग आगे बढ़ती रहती है। –

11

मुझे लगता है आश्वस्त करने के लिए "ईश्वर वस्तु" का अर्थ है एक विशाल वर्ग (कोड की रेखाओं में मापा जाता है)।

मूलभूत विचार अन्य कार्यों में अपने कार्यों के हिस्सों को निकालना है।

आदेश उन आपको लगता है कि अक्सर एक साथ आदत हो

  • क्षेत्रों/पैरामीटर के लिए देख सकते खोजने के लिए। वे एक नई कक्षा

  • विधियों (या विधियों के कुछ हिस्सों) जो क्लास में फ़ील्ड के केवल एक छोटे से सबसेट का उपयोग करते हैं, वे शायद उस क्षेत्र वाले वर्ग में स्थानांतरित हो सकते हैं।

  • आदिम प्रकार (int, स्ट्रिंग, बूलियन)। वे अक्सर बाहर आने से पहले मूल्य वस्तुएं हैं। एक बार वे मूल्य वस्तु के बाद, वे अक्सर तरीकों को आकर्षित करते हैं।

  • ईश्वर वस्तु के उपयोग को देखें। क्या विभिन्न ग्राहकों द्वारा उपयोग की जाने वाली विभिन्न विधियां हैं? वे अलग-अलग इंटरफेस में जा सकते हैं। उन intefaces बदले में अलग कार्यान्वयन हो सकता है।

    • टेस्ट::

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

  • संस्करण नियंत्रण: आप एक संस्करण नियंत्रण चाहते हैं जो आपको हर 2 मिनट में वास्तव में धीमा करने के बिना प्रतिबद्ध करने की अनुमति देता है। एसवीएन वास्तव में काम नहीं करता है। गिट करता है

  • मिकाडो विधि: मिकाडो विधि का विचार परिवर्तन का प्रयास करना है। अगर यह बहुत अच्छा काम करता है।यदि ध्यान न दें कि क्या टूट रहा है, तो उन्हें आपके द्वारा शुरू किए गए परिवर्तन की निर्भरता के रूप में जोड़ें। रोलबैक आप बदलते हैं। परिणामी ग्राफ में, प्रक्रिया को उस नोड के साथ दोहराएं जिसमें अभी तक कोई निर्भरता नहीं है। http://mikadomethod.wordpress.com/book/

0

आप पहले शुरू: आप कैसे पता था कि एक भगवान वर्ग बुरा है?

या कम से कम आप भगवान वर्ग को कैसे मापते हैं?

अच्छी-बड़ी-श्रेणी और बुरे-देवता-वर्ग के बीच एक बाध्यता और अंतर खोजने का प्रयास करें।

उदाहरण के लिए: कुछ अतिरिक्त सहायकों, गुणों और अंतर्निर्मित उपयोग विधियों के साथ कक्षा भविष्य में भगवान वर्ग होने का उम्मीदवार है, लेकिन यह कोड का एक बहुत अच्छा टुकड़ा भी हो सकता है।

मेरा मानना ​​है कि ईश्वर वर्ग केवल भूल गए या स्थगित रिफैक्टरिंग के साथ एक बड़ा वर्ग निकाय है, लेकिन समय के साथ बढ़ रहे रिफैक्टरिंग का एक कारण है।

  • विरासत और mixins,
  • प्रतिनिधिमंडल (पूर्व:: फ़ाइलें, बाहरी कक्षाएं, एपीआई/मुखौटा Utils के लिए),
  • बंटवारे वर्ग:

    जनरल यहाँ सलाह के एक उपयोग है जोड़ने उपवर्गों या संबंधित वर्गों,

  • अच्छा पद्धति का उपयोग कर, ठोस की तरह,
  • अपने आप में पुनर्रचना की कला को विकसित करने,