2009-09-22 10 views
12

पर कोडिंग-शैलियों और मानकों में सुधार करने के लिए एक कंपनी में कोडिंग-शैली के मानकों में सुधार करने के लिए सबसे अच्छा तरीके क्या हैं? आइए यहां एक उदाहरण के रूप में सी # का उपयोग करें।कोडिंग शैली: कैसे एक कंपनी

मुझे लगता है कि डेवलपर्स के बीच कई अंतर हैं जिन्हें ध्यान में रखना आवश्यक है। ठोस लोग शिक्षा, अनुभव और पिछले प्रोग्रामिंग-भाषाओं हो सकते हैं।

कोई कैसे औचित्य देता है कि कुछ और सही है?

एक व्यक्ति कह सकता है "मैं अपने शरीर को उस स्थान पर ले जाता हूं जहां मैं अपने 4-व्हील वाले वाहन" के साथ अपना पैसा कमाता हूं। तो क्यों इसे और अधिक "सही" कहने के लिए "मैं अपने कार में काम करने के लिए ड्राइव" क्या है?

कुछ लोगों को कोड के अधिक लाइनों के साथ अधिक स्पष्ट कोड पसंद कर सकते हैं। कुछ अधिक तंग कोड पसंद हो सकता है।

// Explicit 
string text = defaultValue; 
if (string.IsNullOrEmpty(text)) { 
    text = fallbackValue; 
} 
// Tighter 
string text = defaultValue ?? fallbackValue; 

या पुराने सुरक्षात्मक प्रोग्रामिंग शैली है, जहां आप शुरुआत में त्रुटि के मामलों के लिए जाँच करें और एक सकारात्मक अगर-खंड के अंदर पूरे विधि शरीर रैप नहीं:

public string ChangeText(string text) 
{ 
    if (!string.IsNullOrEmpty(text)) 
    { 
     // Do a lot of stuff 
    } 
    else { 
     throw new Exception(); 
    } 
} 
// vs. 
public string ChangeText(string text) 
{ 
    if (string.IsNullOrEmpty(text)) { 
     throw new Exception(); 
    } 
    // Do a lot of stuff 
} 

वर्ष है " मुझे इस कोड को पढ़ने में परेशानी हो रही है "यहां वैध? यह वही स्थिति है जब जेनिक्स को सी # से पेश किया गया था, लोगों को इसे पढ़ने में प्रारंभिक परेशानी थी।

अपठनीय कोड और कोड के बीच खींची गई रेखा कहां है जहां कुछ डेवलपर्स का उपयोग नहीं किया जाता है?

फिल हैक्स "7 Stages of new language keyword grief" का कौन सा हिस्सा यहां वैध अंक है?

क्या कोडिंग-मानकों को सेट करने और उन्हें किसी कंपनी में बनाए रखने के कोई आसान तरीके हैं?

अद्यतन: की तरह चर नामकरण विचार बातों में ले लो, जो वास्तव में एक दस्तावेज़ में परिभाषित नहीं किया जा सकता है। या यह कर सकते हैं?

+0

समुदाय विकी – SilentGhost

+0

होना चाहिए कुछ प्रश्नों के डुप्लिकेट का उल्लेख नहीं करना चाहिए। –

उत्तर

5

एक कंपनी पर कोडिंग-मानक स्थापित करने के लिए सबसे आसान तरीका:

एक मानक दस्तावेज़ बनाएँ और यह लागू।

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

+0

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

+0

एक कोडिंग मानक दस्तावेज़ विकास टीम के लिए आंतरिक है ... और प्रत्येक डेवलपर दस्तावेज़ पढ़ता है ताकि वे टीम के कोडिंग मानकों को जान सकें। इसका ग्राहक के साथ कुछ लेना देना नहीं है। क्लाइंट को आपकी टीम के कोडिंग मानकों को कभी नहीं देखना चाहिए (जब तक वे निश्चित रूप से अनुरोध नहीं करते हैं)। –

+0

@ जस्टिन: फिर, यह अच्छा है लेकिन यह मुझे ऐसा कोड करने से रोकने के लिए कुछ भी नहीं करता है जो एक ही शैली में नहीं है - आपको स्क्वायर वन पर वापस रखता है, जहां ओपी है और कैसे रुकना है इसके बारे में पूछता है। –

0

मुझे लगता है कि स्थिरता यहाँ महत्वपूर्ण है। वहाँ एक अर्थ बहस जिस पर जिस तरह से अन्य की तुलना में बेहतर है, जब तक मौजूदा कार्यप्रणाली विशेष रूप से बुरा है में प्राप्त करने में बिंदु का एक बहुत नहीं है।

महत्वपूर्ण बात यह है कि टीम लगातार अपना कोड लिखती है ताकि अगर कोई बस द्वारा इस्तीफा दे या हिट हो जाए तो उसके सहयोगियों को पता है कि कोड के साथ क्या काम चल रहा है जब उन्हें इसके साथ काम करने के लिए मजबूर किया जाता है।

5

आप हमेशा माइक्रोसॉफ्ट से StyleCop जैसे निःशुल्क टूल्स का उपयोग कर सकते हैं।

आप को अक्षम या नियम संशोधित कर सकते हैं आप पसंद नहीं करते

+1

जावा के लिए, चेकस्टाइल देखें: http://checkstyle.sourceforge.net/ –

1

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

के लिए उपकरणों का एक बहुत कुछ कर रहे हैं (स्वतः) की जाँच करें और कोडिंग शैली लागू करते हैं। (जावा-वर्ल्ड के लिए एक उदाहरण चेकस्टाइल है, जिसे ग्रहण में एकीकृत किया जा सकता है और 'हडसन' जैसे निरंतर एकीकरण समाधान में भी एकीकृत किया जा सकता है।)

3

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

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

कौन सा शैली आप चयन करते हैं? अच्छी तरह से, भाषा के आधार पर अक्सर पहले से ही लोकप्रिय शैलियों हैं। आपके उदाहरण के लिए (सी #) मैं माइक्रोसॉफ्ट शैली का चयन करूंगा। अंत में: केवल परियोजना प्रबंधक (वरिष्ठ प्रोग्रामर) को इसे समायोजित करने का अधिकार है।

+0

हाँ - रीशेर्पर जैसे टूल ब्रेस-प्लेसमेंट जैसे सम्मेलनों से मेल खाने के लिए स्रोत को दोबारा सुधारना बहुत आसान बना सकते हैं। – TrueWill

1

कोई कैसे औचित्य देता है कि कुछ और है?

आसान: सिर्फ नहीं है। कोडिंग शैली चुनें, इसे संवाद करें, और इसे लागू करें।

+2

आसान, लेकिन यह आपके कर्मचारियों को घृणा में छोड़ने का कारण बन सकता है। निर्भर करता है कि क्या आपका तकनीकी सम्मान है (आपकी वरिष्ठता और अधिकार से पूरी तरह से अलग)। – MarkJ

4

कोडिंग शैली के दो मुख्य पक्षों रहे हैं: "मैं कहां से उद्घाटन ब्रेस रखूँ"

  1. मुद्दों को टाइप करें - ये आम तौर पर महत्वहीन होते हैं, यानी एक शैली को दूसरे पर पसंद करने के वास्तविक कारण नहीं हैं।
  2. वास्तविक कोडिंग के नियम, जैसे हम वापसी का प्रयोग कर एक समारोह के बीच में है।

जिस तरह से मैं इसे देखता हूं, # 1 प्रकार के मुद्दों के लिए, किसी भी बहस में कोई बात नहीं है। बस मानक मानकों में एक मानक निर्धारित करें, और इसे लागू करें (बाद में इस पर अधिक)।

दूसरे मुद्दे के लिए, मैं ईमानदारी से यह सुनिश्चित नहीं कर रहा हूं कि यह नियामक होना चाहिए या नहीं। मैं व्यक्तिगत रूप से त्रुटि की स्थिति की जांच के लिए वापसी मूल्यों के साथ छिड़कने वाले कार्यों से प्यार करता हूं, और मैं कुछ लोगों को जानता हूं जो अभ्यास में क्रिंग करते हैं। लेकिन दिन के अंत में, हम आमतौर पर एक-दूसरे के कोड को ठीक से पढ़ सकते हैं। इस तरह के मुद्दे इस बारे में बहुत अधिक हैं कि आप स्वयं को अभिव्यक्त करना पसंद करते हैं, आपके लिए क्या लिखना आसान है, और मैं नहीं चाहता कि कोई कंपनी नियम बनाये जो इस स्तर तक पहुंच जाए।

चीजों को लागू करने के तरीके के रूप में, मानकों के दस्तावेज अच्छे हैं, लेकिन मेरे अनुभव में, कभी न पढ़े या बारीकी से पालन नहीं किया जाता है, और जल्द ही भुला दिया जाता है। सबसे अच्छा तरह से स्वचालित उपकरण के कुछ प्रकार जो आपको बताता है कि आप मानक का उल्लंघन कर रहे है।

उदाहरण के लिए, यहां तक ​​कि एक पूरी तरह से नया जावा प्रोग्रामर के रूप में, मुझे पता था कि मेरे पहचानकर्ताओं को अपरकेस/लोअरकेस कब करना है, क्योंकि केवल ग्रहण मुझे (चुपचाप, अविभाज्य रूप से) मानक बताता है।

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