ओपन सोर्स शिष्टाचार


14

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


13
gotoजरूरी नहीं कि गड़बड़ हो। ऐसे कई मामले हैं जब इसका उपयोग पूरी तरह से उचित है।
तर्क

1
@ एसके-लॉजिक - जब मेरे पास स्रोत नहीं है, तो यह ऐसी स्थिति की तरह लग रहा था जहां यह गोटो के बजाय एक विधि का उपयोग करने के लिए अधिक समझ में आता है (और अधिक स्पष्ट होगा)। हालाँकि, मेरा विकास अनुभव सीमित है, इसलिए मैं गलत हो सकता हूं :)
जेटी

2
क्या आपने प्रारंभिक लेखक से संपर्क किया है और उससे पूछा है कि वह क्या सोचता है?
k3b

@ k3b - मैंने अभी तक नहीं किया है। मैं निश्चित रूप से आज रात करूंगा और देखूंगा कि वह क्या सोचता है।
जेटी

जवाबों:


18

ऐसा करना ठीक है, यदि आप इसके बारे में विनम्र हैं और यह कुछ भी नहीं तोड़ता है । आप सुधार कोड के आसपास नहीं जा सकते हैं और बग को शुरू कर सकते हैं। क्या इसकी अच्छी इकाई परीक्षण है? यदि नहीं, तो मैं इकाई परीक्षण जोड़कर योगदान देना शुरू करूंगा, और फिर बाद में संरचना को ठीक करूंगा।


2
मैं सहमत हूँ। अच्छा प्रलेखन और परीक्षण बदसूरत कोड की तुलना में अधिक मूल्यवान हैं जो पहले से ही काम करते हैं।
फिलिप डुपनोविक

कोई इकाई परीक्षण नहीं। वास्तव में परीक्षण करने के लिए कोई कक्षाएं नहीं। वर्तमान में सभी कोड UI कोड में हैं। (उदा।
बटन 1_क्लिक

5
@ जेटी - यूनिट परीक्षणों को जोड़ना और फिर जीयूआई कोड के पीछे के कोड को माइग्रेट करना एक महत्वपूर्ण योगदान होगा। उसके बाद, आप अपने दिल की सामग्री को रिफ्लेक्टर कर सकते हैं।
स्कॉट व्हिटलॉक

13

ओपन सोर्स का मकसद किसी प्रोजेक्ट पर ज्यादा नजरें जमाकर उसे बेहतर बनाना है। जिसमें कोड को बेहतर बनाना शामिल है। उस ने कहा, यह उस सूची पर विज्ञापन करने के लिए अच्छा रूप है जो आप करना चाहते हैं। आपको कुछ पुश वापस मिल सकते हैं, या आपको + 1 का गुच्छा मिल सकता है। वे gotoबयान सिर्फ इसलिए हो सकते हैं क्योंकि मूल लेखक काम पाने के लिए बेहतर तरीके के बारे में नहीं सोच सकता था। यदि आपको धक्का वापस मिलता है, तो यह पता लगाने के लिए एक संवाद दर्ज करना अच्छा है कि दबाव कहां से आ रहा है। कोशिश करें कि इसे व्यक्तिगत न होने दें, और चिंताओं को दूर करने का प्रयास करें।

नीचे की रेखा, इकाई परीक्षण हठधर्मिता की तुलना में जोर से बोलते हैं। यदि आप यह साबित कर सकते हैं कि कोड कुछ मामलों में खराबी है, जैसा कि अभी है, तो आपको या तो अंगूठे मिलेंगे या मूल लेखक अंदर जाएगा और चीजों को ठीक करेगा।

याद रखें, खुले स्रोत में, समुदाय कोड से अधिक महत्वपूर्ण है। यदि कोई समुदाय (उपयोगकर्ताओं और डेवलपर्स के दोनों) नहीं है, तो कोई परियोजना नहीं है।


1
कोड के लिए समुदाय के लिए +1 अधिक महत्वपूर्ण है। इसे पाने के लिए बहुत से लोग।
व्याट बार्नेट

6

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

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

दूसरी ओर, शायद मूल लेखक उस समय इसे लिखने के लिए एक क्लीनर तरीके के बारे में नहीं सोच सकता था। यह वह जगह है जहां कोड शब्दों की तुलना में जोर से बोलता है, क्योंकि उन्हें विश्वास नहीं हो सकता है कि जब तक आप उन्हें नहीं दिखाते हैं, तब तक क्लीनर किया जा सकता है। मेरे पहले ओपन सोर्स योगदानों में से एक पूर्ववत स्टैक फिक्स था जिसने महत्वपूर्ण प्रदर्शन में सुधार किया था, लेकिन जब मैंने पहली बार वर्णित किया तो कुछ कोर डेवलपर्स ने बहुत जटिल लग रहा था। एक शॉर्ट कोड नमूना उन्हें बोर्ड पर लाया।

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


6

अनुभव से बोले ...

जब मैंने पहली ओपन सोर्स परियोजना में योगदान दिया था, तब मैं सभी पेशाब और सिरका से भरा हुआ था जब मैंने पहली बार भी शुरुआत की थी।

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

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

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

कोड को फिर से भरना और कार्यक्षमता जोड़ना (या हटाए गए क्रेफ़्ट को हटाना) आमतौर पर 'सफाई' कोड पर पूर्वता लेता है।

एक ओपन सोर्स प्रोजेक्ट पर काम करने का सबसे कठिन और सबसे फायदेमंद हिस्सा है, आपसे पूछा जाएगा कि आप सबमिट करने के लिए बदलाव करने का प्रस्ताव क्यों दे रहे हैं। यदि आप एक अच्छा कारण दे सकते हैं तो बेहतर मौका है कि आपका पैच जमा हो जाएगा।

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

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

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

इससे पहले कि आप बहुत समय बर्बाद करते हैं, 'दूसरे की कोडिंग शैली की त्रुटियों को ठीक करने की कोशिश कर रहे हैं'

क्या वे परिवर्तन हैं जो आप परियोजना में मूल्य जोड़ने के आधार पर प्रस्तावित कर रहे हैं या वे आपके स्वयं के आंतरिक शैलीगत धर्म पर आधारित हैं।

वहाँ एक है बहुत स्टैक ओवरफ़्लो (और संबंधित स्टैक एक्सचेंज साइटों) पर धर्म के। मेरा मतलब बहुत है । लोग शैली के बारे में अंतहीन रूप से सोचते हैं और बात करते हैं, जैसे कि आप इसके बारे में जितना अधिक बात करते हैं, आप 'सही, आदर्श, अविनाशी, अचूक' कोडिंग शैली के करीब पहुंचते हैं। मैं इसके बारे में बहुत अधिक बात करता हूं क्योंकि यह मजेदार है।

ओपन सोर्स की दुनिया में, शैली इतनी महत्वपूर्ण नहीं है। समारोह है

नोट: इस सलाह के सभी मानते हैं कि आपका द्वारपाल एक उचित और प्रतिभाशाली प्रोग्रामर है। यदि वह है, तो अपने आप को भाग्यशाली मानें कि आप किसी के साथ अटक नहीं गए हैं b @ & # es जिसका एकमात्र चिंता उनके 'बच्चे' की रक्षा करना है। वे करते हैं जंगली में बाहर मौजूद हैं, इसलिए यदि आप एक मुठभेड़ है आश्चर्यचकित नहीं किया।


1

गुणवत्ता> शिष्टाचार

मेरी राय में आपको जैसे ही पता चलता है कि खराब गुणवत्ता वाले अन्य लोगों के कोड को संपादित करने के बारे में चिंता नहीं करनी चाहिए। एक अच्छी सॉफ्टवेयर गुणवत्ता प्राप्त करने के लिए आपको बस साफ कोड की देखभाल करनी होगी। मुझे अन्य लोगों के कोड में सुधार के साथ कोई समस्या नहीं दिखती है अन्य लोगों को जागरूक और आभारी होना चाहिए कि कोडर हैं जो अपने कोड पर काम करते हैं।


0

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

मूल लेखक के साथ संवाद करना भी एक अच्छा विचार है।


0

इसमें कुछ भी गलत नहीं है goto। विधानसभा कोड को देखें - सभी जगह बहुत सारे गोटो (कूद और शाखाएं)।

कारण है कि gotoइन दिनों एक बुरा नाम है डिज्कस्ट्रा कागज की वजह से है जाओ करने के लिए बयान हानिकारक माना जो एक बहुत ही बुरी बात के रूप में गोटो बयान का पता लगाया।

ध्यान दें कि 50 साल पहले जहां सॉफ्टवेयर इंजीनियरिंग का नाम अभी तक नहीं था, और अधिकांश प्रोग्रामिंग भाषाएं अनिवार्य रूप से अंतर्निहित मशीन का सार थीं इसलिए मशीन भाषा में गोटो शामिल थे, इसलिए उन्होंने ऐसा किया। आप माइक्रोसॉफ्ट बेसिक (ऐप्पल पर मूल एक), [या कमोडोर 64] में कुछ प्रोग्रामिंग करने की कोशिश कर सकते हैं जिससे यह अंदाजा लगाया जा सकता है कि वह मानसिकता कैसी थी।

दीजकस्ट्रा जो बहस कर रहा था वह यह था कि चीजों को सरल रखने के लिए सभी जगह नहीं कूदना चाहिए, बल्कि एक सामान्य अंत के साथ एक सरल प्रोग्राम पथ रखना चाहिए। जैसे एक विधि से वापसी। दूसरे शब्दों में - केवल स्थानीय छलांग, वैश्विक वाले नहीं।

यह तर्कों के साथ विधि कॉल, कोड के मॉडर्लाइजेशन, पैकेज आदि जैसी चीजों को लाने की दिशा में एक कदम था, जो सभी सॉफ्टवेयर विकास की जटिलता को दूर करने के लिए पेश किए गए हैं। उस युद्ध में गोटो का बयान सबसे पहला समझदार था।


यह इस सवाल का जवाब नहीं देता है: "क्या यह मेरे लिए" खराब कोड "को ठीक करने" का उचित शिष्टाचार है या क्या मुझे इसे करने देना चाहिए और नई विशेषताओं पर काम करना चाहिए? "

@Snowman यदि कोड आंतरिक नहीं है और स्वचालित रूप से खराब है, तो सवाल यह है कि "क्या मुझे कोड को ठीक करना चाहिए जो टूटा नहीं है या नहीं"
Thorbjørn Ravn Andersen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.