मैं एक ऐसी टीम के साथ काम करता हूं जो एक साल से भी कम समय में 2 डेवलपर्स से बढ़कर 10 हो गई। मैं नंबर 3 था, और सबसे पहले एक कोडिंग मानकों का मुद्दा उठा। दो मूल डेवलपर्स कुछ वर्षों से कंधे से कंधा मिलाकर काम कर रहे थे और वे एक सामान्य मानक को अपना रहे थे जो मेरे लिए अलग लग रहा था। आपके सामने वही समस्याएं थीं जिनका आप वर्णन कर रहे हैं।
हमने जो किया वह था:
अनुसंधान कोडिंग मानकों
हमने कुछ दिनों तक ओपन सोर्स प्रोजेक्ट्स की स्थापना की। हमें पता था कि टीम तेजी से विस्तार करेगी और हम वास्तविक समाधानों की तलाश कर रहे थे जो वास्तविक परियोजनाओं पर आधारित हों, न कि कुछ सामान्य दिशा-निर्देशों के आधार पर। इसके अलावा, हमने इष्टतम कोडिंग मानकों की परवाह नहीं की, लेकिन नियमों और दिशानिर्देशों के एक सेट के लिए, जो हमारे कोडबस के सभी को फिर से संगठित करने के लिए समझ में नहीं आएगा। हम एक कोडिंग मानकों की तलाश कर रहे थे यदि आप करेंगे।
हम तीनों ने तय किया कि एक स्थापित PHP परियोजना के लिए सबसे अच्छा कोडिंग मानक हैं, जो Zend फ्रेमवर्क द्वारा अनुसरण किए गए थे। सौभाग्य से Zend फ्रेमवर्क लोग एक बहुत व्यापक कोडिंग मानक दस्तावेज़ प्रदान करते हैं ।
हमारे स्वयं के कोडिंग मानक बनाना
बेशक हमारी परियोजना पर किसी अन्य परियोजना के कोडिंग मानकों को लागू करने से कोई मतलब नहीं है। हम एक टेम्पलेट के रूप में Zend फ्रेमवर्क दस्तावेज़ का उपयोग करते हैं:
- पहले हमने वह सब कुछ हटा दिया जो हमारी परियोजना पर लागू नहीं हुआ था
- फिर हमने वह सब कुछ बदल दिया जिसे हम अपनी शैली की शैली के रूप में मानते थे
- और अंत में हमने सब कुछ लिख दिया
इसलिए हमारे पास हमारे हाथों में एक बहुत बड़ा दस्तावेज़ था, जो हमारे फैंसी विकी में संग्रहीत था, यह एक अच्छा पढ़ा गया था, हम सभी ने सहमति व्यक्त की। और पूरी तरह से बेकार है।
हमारे वादे पर खरा रहा
उस समय हमारा कोडबेस 1 * 10 ^ 6 स्लो था। हम जानते थे कि चूंकि हमने औपचारिक कोडिंग मानकों को अपनाया था, इसलिए हमें अपना कोड रिफैक्ट करना शुरू करना था, लेकिन उस समय हमें अन्य मुद्दों के साथ दबाया गया था। इसलिए हमने अपने बहुत ही मुख्य पुस्तकालयों को केवल 5 * 10 ^ 3 के प्रतिशोध के लिए तय किया।
हम में से एक को कोडिंग मानकों मास्टर होने के लिए असाइन किया गया (हमने मास्टर की जगह स्थानीय अपवित्रता का इस्तेमाल किया ) मानकों की जाँच और लागू करने की जिम्मेदारी के साथ। हम हर कुछ स्प्रिंट की भूमिका को रीसायकल करते हैं। मैं पहला था, और यह बहुत काम था, क्योंकि मुझे लगभग हर कमिटमेंट की निगरानी करनी थी।
मेरे कार्यकाल के दौरान मूल दस्तावेज़ में कई नई चर्चाएँ और छोटे परिशिष्ट थे, और अंत में हमारे पास कुछ हद तक स्थिर दस्तावेज़ थे। हम इसे हर अब और फिर से बदलते हैं, लेकिन इनमें से अधिकांश परिवर्तन भाषा की नई विशेषताओं पर होते हैं, क्योंकि PHP 5.3 सभी लेकिन नाम में एक प्रमुख रिलीज थी।
नए आदमी से निपटना
जब अगला नया लड़का आया, तो हमारे कोडिंग मानकों को परीक्षण में लाने का समय था। हमारे कोडबेस के एक छोटे से परिचय के बाद, हमने उसे हमारे कोडिंग मानकों के दस्तावेज़ का मूल्यांकन करने के लिए कहा। वह लगभग रो पड़ा। ऐसा प्रतीत हुआ कि उन्होंने सब कुछ अलग तरीके से किया।
जैसा कि मैं उस समय कोडिंग मानक मास्टर था, यह मेरे ऊपर था कि मैं उसके इनपुट का मूल्यांकन करूं और उसके अनुसार दस्तावेज को संशोधित करूं। उनके प्रस्ताव थे:
- व्यक्तिगत शैली के मामले (संक्षेप में खारिज)
- मानक जो उसकी जावा पृष्ठभूमि के लिए समझ में आता है, लेकिन PHP के साथ ऐसा नहीं है (खारिज)
- PHP के साथ अपने संक्षिप्त प्रदर्शन से किए गए कन्वेंशन (कुछ को खारिज कर दिया गया था, लेकिन बहुत कुछ लोकप्रिय सम्मेलनों के रूप में साबित हुआ जो हमने कभी सोचा नहीं था या हमारे प्रारंभिक शोध में पता चला है)
अगले कुछ हफ्तों के लिए उन्हें एक साधारण काम सौंपा गया था: मानकों के साथ हमारे कोडबेस के कई हिस्सों को आज तक लाओ। मुझे कुछ नियमों के आधार पर उन भागों को सावधानीपूर्वक चुनना था:
- कोड हमारे कोडबेस (और सामान्य रूप से PHP) से अपरिचित किसी व्यक्ति के लिए अपेक्षाकृत आसान होना चाहिए
- कोड उस पर होना चाहिए जिसे वह करने के लिए काम पर रखा गया था
मैंने उसकी प्रक्रिया की निगरानी की और उसने अच्छा काम किया। हमने कोड के कई हिस्सों की पहचान की जो हमारे दस्तावेज़ को फिट करना असंभव था और तदनुसार संशोधित किया गया (कोड और / या मानक, जो भी अधिक समझ में आया)
और फिर एक और नया आदमी आ गया। हमने प्रक्रिया को दोहराया (इस बार अलग-अलग मास्टर), और इसने फिर से काम किया। और फिर।
निष्कर्ष के तौर पर
- एक कोडिंग मानक दस्तावेज़ बनाएं, लेकिन सुनिश्चित करें कि आपके मानक केवल आपके स्वयं के नहीं हैं, लेकिन आपके प्लेटफ़ॉर्म के व्यापक समुदाय में सामान्य मानकों को दर्शाते हैं।
- हमारे कोडिंग मानकों के मास्टर के समान भूमिका प्रदान करें। कम से कम नए कोड और विशेष रूप से नए सदस्यों से नए कोड की निगरानी करने के लिए। भूमिका को रीसायकल करें, क्योंकि यह बेहद उबाऊ है।
- हमेशा नए सदस्य से इनपुट का मूल्यांकन करें। हमेशा अपने मानकों को संशोधित करें अगर यह समझ में आता है। आपके कोडिंग मानकों का दस्तावेज़ विकसित होना चाहिए, लेकिन धीरे-धीरे। आप प्रत्येक पुनरावृत्ति पर अपने कोडबेस को फिर से रिफैक्टर नहीं करना चाहते हैं।
- प्रत्येक नए सदस्य के लिए अपने मानकों और सम्मेलनों को सीखने और अनुकूल बनाने के लिए कुछ समय के लिए अनुमति दें। इन स्थितियों में सबसे अच्छा काम करके सीखें।
- विकी ऐसे दस्तावेजों के लिए अद्भुत काम करता है।
- कोड समीक्षा किसी भी स्थिति के लिए अद्भुत काम करती है!
प्रक्रिया के कुछ बिंदु पर यह सुझाव दिया गया था कि हम मानकों की जाँच को स्वचालित करने के लिए पूर्व-प्रतिबद्ध हुक का उपयोग करते हैं। हमने कई कारणों से इसके खिलाफ फैसला किया, इस मुद्दे पर स्टैकऑवरफ्लो पर कुछ दिलचस्प चर्चाएँ हैं:
कुछ PHP विशिष्ट हैं, लेकिन उत्तर सभी प्लेटफार्मों पर लागू होते हैं।