2010-06-03 14 views
10

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

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

मैं डेवलपर्स को केवल नियंत्रण पर डबल क्लिक करने और निकाली गई घटना विधि में लाइन के बाद लाइन टाइप करने को भी देखता हूं।

आपके सुझाव क्या हैं?

+1

+1 ग्रेट प्रश्न - मैं आपके टीडीडी श्वसन से सहमत हूं। अच्छा कोड निर्माण और टीडीडी एक-दूसरे को अच्छी तरह से प्रशंसा करता है –

उत्तर

7

मुझे लगता है कि यह आपकी आंतरिक प्रक्रियाओं पर निर्भर करता है जितना कुछ भी।

मेरी कंपनी में, हम सहकर्मी समीक्षा का अभ्यास करते हैं, और कॉमेट किए गए सभी कोड को किसी अन्य डेवलपर द्वारा 'दोस्त में' होना चाहिए, जिसे आपको अपना कोड समझा जाना है।

समय की बाधाएं एक चीज हैं, लेकिन यदि मैं कोड की समीक्षा करता हूं जिसमें भारी कक्षाएं हैं, तो मैं चेक-इन से सहमत नहीं हूं।

पहले उपयोग करना मुश्किल है, लेकिन दिन के अंत में, यह सभी के लिए बेहतर है।

इसके अलावा, एक वरिष्ठ डेवलपर होने के नाते जो अच्छी कक्षा के डिजाइन के लिए एक चैंपियन है, और उदाहरण देने के इच्छुक और सक्षम है, काफी मदद करता है।

आखिरकार, हम अक्सर कोडिंग 'शो और बताना' सत्र करते हैं जहां हम अपने साथियों को अपना काम दिखाते हैं, यह हमें बदसूरत कोड के साथ ऐसा नहीं करने का व्यवहार करता है!

+2

हां, मैं सहमत हूं। आप कोड समीक्षा में ऐसा कुछ पकड़ लेंगे। आपको बस याद रखना होगा कि यह ऐसी चीजों को इंगित करने के लिए आपका काम है। कभी-कभी मुझे बुरा लगता है कि व्यक्ति ने कुछ गलत किया है, लेकिन यह दिन के अंत में उन्हें बेहतर बनाता है। –

+0

दरअसल - और यदि यह उनके जीवन को आसान बनाता है, तो इसे बनाए रखने के लिए बुलाए जाने पर यह आपके जीवन को आसान बनाता है! –

1

Resharper और निकालें विधि आदेश जैसे टूल का उपयोग करें।

1

लंबी कक्षाएं कई संभवतः एक खराब कोड गंध है।

बहुत से छोटे लोगों को बनाकर अत्यधिक बड़े वर्गों का उपचार करना अपनी समस्याएं पैदा कर सकता है। आपके प्रोजेक्ट के नए इंजीनियरों को यह पता लगाने के लिए कोड के प्रवाह का पालन करना मुश्किल हो सकता है कि क्या होता है। इस समस्या का एक आर्टिफैक्ट बहुत लंबा कॉल स्टैक हो सकता है, कई छोटे वर्गों के माध्यम से निष्पादन घोंसला।

0

हम एक जावा और मेवेन की दुकान हैं, और इनमें से एक ... मुझे लगता है कि आप कह सकते हैं कि हम फोरेंसिक विधियों का उपयोग उत्कृष्ट फाइंडबग, पीएमडी और जावास्स प्लगइन्स हैं। सभी एक विधि में अत्यधिक लंबाई के बारे में चेतावनियां देंगे, और चक्रीय जटिलता गणना बहुत ही खुली हो सकती है।

0

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

यह सब सबसे अच्छा काम करता है यदि डेटा व्यवहार से अलग रखा जाता है, और आपकी भाषा उन घटनाओं की तरह संरचनाओं का समर्थन करती है जिनका उपयोग निर्भरता ग्राफ की निचली दिशा में बहने वाले संचार को कम करने के लिए किया जा सकता है।

0

अपने स्वचालित निर्माण और लिखने/कॉन्फ़िगर/कुछ नियमों का उपयोग करने के लिए कुछ स्थिर कोड विश्लेषण टूल का उपयोग करें ताकि उदाहरण के लिए किसी को इसे तोड़ने पर औचित्य लिखना पड़े।

1

एक और सुझाव केवल यही पूछा जाता है। "क्या होगा" खेल न खेलें और समाधान को ओवरडिज़ाइन करने का प्रयास करें। इसके पीछे "इसे सरल, बेवकूफ" विचार रखें।

संबंधित मुद्दे