मुझे लगता है कि यह इस बात पर निर्भर करता है कि समग्र परियोजना कितनी बड़ी होगी।
एक चरम पर, मान लें कि आपके पास 1 Mloc प्रोजेक्ट है। इस परियोजना के बड़े हिस्से के लिए, यह संभावना नहीं है कि इसमें शामिल सभी क्षेत्रों में एक एकल व्यक्ति "विशेषज्ञ" होगा। तो इस मामले में, मैं प्रत्येक प्रमुख घटक के लिए मौजूदा कोड शैलियों के साथ रहना चाहूंगा। नए डेवलपर्स एक क्षेत्र चुनेंगे, यह सीखेंगे, और यह संभावना नहीं है कि वे कई अन्य घटकों को देखेंगे जिनमें अलग-अलग कोड शैलियाँ हो सकती हैं।
परियोजना एक बहुत छोटे, जहां यह है है व्यक्तियों पूरे कोड आधार को समझने की संभावना है, तो मैं एक प्रमुख कोड शैली और उस के साथ छड़ी लेने जाएगा। इस मामले में, मुझे लगता है कि पूरे प्रोजेक्ट में स्थिरता अधिक मायने रखती है क्योंकि नए डेवलपर्स के प्रोजेक्ट के सभी क्षेत्रों में काम करने की संभावना होगी।
मध्यम आकार की परियोजनाएं इस निर्णय के लिए शायद सबसे कठिन हैं। इस मामले में, आपको प्रत्येक दृष्टिकोण के लिए लागतों का वजन करना होगा और आपके द्वारा तय किए गए निर्णय पर कम से कम महंगा दीर्घकालिक होगा। चुनौती यह है कि मध्यम आकार की परियोजनाएं आमतौर पर बस इतनी हो गई हैं जहां पूर्ण स्टाइल रिफैक्टिंग निषेधात्मक रूप से महंगी लगती है। आप यह देखना चाहते हैं कि कोड ट्री संरचना को देखने के लिए दूसरी चीजों को समूह विशेष कोड शैलियों में व्यवस्थित किया जा सकता है या नहीं।
किसी भी तरह से, अंतिम निर्णय उस टीम के साथ आराम करना चाहिए जिस पर आप इस पैकेज को एक साथ रख रहे हैं।
कुछ ऐसे आउटलेयर जो ऊपर से मेरे तर्क को शिफ्ट कर सकते हैं:
यदि मॉड्यूल में से एक या एक से अधिक में एक अत्याचारी शैली है, तो एक बड़ी परियोजना पर भी, आसपास रखने में कोई समझदारी नहीं है। हां, शैली व्यक्तिपरक है, लेकिन अगर आप और आपके साथी परियोजना प्रतिभागी वास्तव में, वास्तव में विशेष क्षेत्रों के प्रवाह को पसंद नहीं करते हैं, तो पुरानी शैली को उलझाएं और इसे बेहतर बनाएं।
यदि सभी शैलियाँ यथोचित रूप से एक-दूसरे के समीप हैं, तो "यहां नया तरीका" घोषित करना और सभी नए कोड और महत्वपूर्ण रीफ़ेक्टरिंग के लिए उपयोग करना आसान हो सकता है। यह समीक्षाओं को थोड़ा दर्द कर सकता है, लेकिन मेरे अनुभव में अधिकांश लोग इस दृष्टिकोण को अपनाने में काफी सक्षम हैं। यह एक गप्पी संकेत भी प्रदान करता है जहां पुराना कोड है।
कभी-कभी शैली को भाषा में जोड़ी गई नई कार्यक्षमता के आधार पर स्थानांतरित कर दिया जाता है। C ++ ने वर्षों में कई विशेषताओं को उठाया है। यह एक नई शैली के लिए पुरानी शैली की आवश्यकता के रूप में रिफ्लेक्टर को समझ सकता है जो उन विशेषताओं का लाभ उठाता है।
कुछ पुस्तकालयों में विशेष रूप से मुहावरेदार दृष्टिकोण या शैली हो सकती है। यदि हां, तो मैं उस पुस्तकालय के लिए उस शैली के साथ रहना चाहूंगा, भले ही वह परियोजना के बाकी हिस्सों के साथ संघर्ष कर सकता है। यहां आशय यह है कि ऐसी बाधाओं को बढ़ाया जाए जो कोई frobnosticatorsअन्य परियोजनाओं पर काम करता है, वह आपके प्रोजेक्ट पर भी काम करेगा।
कुछ टिप्पणियों ने एक विचार के रूप में अनिवार्य और वस्तु-उन्मुख शैलियों का उल्लेख किया।
मॉड्यूल जो एक विशेष शैली में "भारी" हैं, शायद उस तरह से बने रहना चाहिए यदि मॉड्यूल मध्यम आकार या बड़ा है। मैंने तीन प्रमुख शैलियों (अपरिमेय, उद्देश्य और कार्यात्मक) के साथ काम किया है, और मैंने भारी अनिवार्यता को एक ओओ शैली में बदल दिया है। एक मध्यम या बड़ी मात्रा में कोड के साथ, रीफैक्टरिंग (असाधारण रूप से) मुश्किल हो सकती है। मेरा अनुभव उलझा हुआ था क्योंकि रिफैक्टरिंग में सहायता के लिए मेरे पास कोई टूलिंग समर्थन नहीं था।
मुझे लगता है कि भारी रूप से स्टाइल किए गए मॉड्यूल और उन मॉड्यूलों के बीच एक उच्च सहसंबंध होता है, जो विशेष रूप से विकास के निशानों के लिए मुहावरेदार होते हैं, जो कि आउटलेयर के साथ उठाए गए अंतिम बिंदु पर वापस जाता है। तो किसी भी मॉड्यूल जो आपको लगता है कि कार्यक्षमता के लिए ऐसा लगता है, और आप उस डोमेन के विशेषज्ञों को आसानी से अपनी परियोजना पर भी काम करने में सक्षम होना चाहते हैं। लेकिन अगर विकल्प हैं और आपकी टीम को उस मॉड्यूल की शैली पसंद नहीं है, तो मैं विकल्पों की जांच करूंगा।
इसी तरह, मैंने एक भारी-ओओ स्टाइल मॉड्यूल के साथ काम किया है, जहां ओओ सिद्धांतों को बहुत दूर ले जाया गया और गलत तरीके से उपयोग किया गया। एक उदाहरण के रूप में, कई विरासत के विकल्प के रूप में इंटरफेस का उपयोग किया जा रहा था। और जैसा कि आप उम्मीद कर सकते हैं, यह एक क्रूड कार्यान्वयन था। मैं उस मॉड्यूल को फिर से बनाने में उचित प्रगति करने में सक्षम था, लेकिन मैंने अंततः उस दृष्टिकोण को छोड़ दिया क्योंकि मुझे इसके बजाय उपयोग करने के लिए बेहतर पैकेज मिला।