मुझे अपना कोड OpenSourcing और GitHub पर डालने के लिए कैसे तैयार होना चाहिए?


9

कुछ हफ्तों में, मेरा प्रोजेक्ट समाप्त होने जा रहा है और मैं इसका उपयोग करने के लिए अन्य लोगों के लिए अपना कोड तैयार करना शुरू करना चाहता हूं।

मैं GitHub को सब कुछ पोस्ट करने जा रहा हूं ताकि लोग इसे ट्विक कर सकें और उम्मीद है कि यह बेहतर होगा।

मुझे लगता है कि मैं जो पूछ रहा हूं वह यह है कि यह सुनिश्चित करने का सबसे अच्छा तरीका क्या होगा कि मेरा कोड पर्याप्त रूप से प्रलेखित है और दूसरे लोगों को उपयोग करने के लिए सही है?

मुझे पता है कि आपको हमेशा सब कुछ टिप्पणी करनी चाहिए और मैं हर विधि के लिए @ एप्स फीचर में डालने जा रहा हूं, लेकिन क्या सामान्य रूप से कोई अन्य सुझाव हैं?


जवाबों:


12
  • सुनिश्चित करें कि रिपॉजिटरी की जड़ में एक README.txt फ़ाइल है जो लोगों को निर्देश देती है कि इसे कैसे बनाया जाए। निर्देश उस फ़ाइल में हो सकते हैं, या वे एक अलग फ़ाइल या विकी पृष्ठ में हो सकते हैं।
  • आदर्श रूप से, इसे बनाएं ताकि आप एक ही आदेश के साथ कोड का पूरी तरह से निर्माण और परीक्षण कर सकें। मैन्युअल चरणों का एक गुच्छा की आवश्यकता नहीं है।
  • सुनिश्चित करें कि आपके पास कोड के लिए परीक्षण हैं। यह अन्य डेवलपर्स को यह देखने के लिए एक सुविधाजनक स्थान प्रदान करता है कि आपका कोड कैसे उपयोग किया जाता है, साथ ही यह उन लोगों के लिए सुरक्षा जाल प्रदान करता है जो आपके कोड को संशोधित करते हैं। यह जानते हुए कि मैं आपके कोड को संपादित कर सकता हूं और फिर यह देखने के लिए एक सूट चला सकता हूं कि क्या मैंने कुछ तोड़ दिया है, वह अमूल्य है।
  • सामान्य कोडिंग मानकों का पालन करें, या उन लोगों को प्रकाशित करें जिनका आप उपयोग करते हैं।
  • यदि आपका कोड OO का उपयोग करता है, तो सुनिश्चित करें कि कम से कम सभी सार्वजनिक तरीकों और विशेषताओं के पास पर्याप्त दस्तावेज हों
  • सुनिश्चित करें कि यह स्पष्ट है कि आपका कोड किस लाइसेंस का उपयोग करता है। आमतौर पर इसका अर्थ है LICENSE.txt फ़ाइल शामिल करना, या आपके विशिष्ट लाइसेंस के लिए जो भी तंत्र आवश्यक है, उसका पालन करना। इसके अलावा, लाइसेंस के बारे में सचेत चुनाव करें। सिर्फ GPL का उपयोग न करें क्योंकि यह सब आप जानते हैं। इसी तरह, बस बीएसडी या एमआईटी या अपाचे का उपयोग न करें अगर आप सभी परिचित हैं ... एक घंटे उन पर शोध करें ताकि आप कम से कम जीपीएल और गैर-जीपीएल लाइसेंस के बीच मूलभूत अंतर को समझ सकें।
  • कोड से सभी संवेदनशील जानकारी निकालें, जैसे कि हार्ड-कोड किए गए उपयोगकर्ता नाम, पासवर्ड, ईमेल पते, आईपी पते, एपीआई कुंजी, आदि (सुझाव के लिए हकन डेरिल का धन्यवाद)

अच्छी सलाह। जोड़ने के लिए एक और बात: यदि कोई हो तो पासवर्ड / एपीआई कीज जैसी निजी जानकारी को हटा दें।
हकन डेरिल सेप

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

3

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

केवल स्रोत कोड प्रलेखन के साथ एक परियोजना पर काम करने की कोशिश करना हमेशा निराशाजनक होता है।


1

मुझे लगता है कि मैं जो पूछ रहा हूं वह यह है कि यह सुनिश्चित करने का सबसे अच्छा तरीका क्या होगा कि मेरा कोड पर्याप्त रूप से प्रलेखित है और दूसरे लोगों को उपयोग करने के लिए सही है?

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

मुझे पता है कि आपको हमेशा सब कुछ टिप्पणी करनी चाहिए और मैं हर विधि के लिए @ एप्स फीचर में डालने जा रहा हूं, लेकिन क्या सामान्य रूप से कोई अन्य सुझाव हैं?

सब कुछ टिप्पणी करें? नहीं। उस कोड को कमेंट करें जिसे सही मायने में कमेंट्री की आवश्यकता है। कमेंट करें। कोड के एक संभावित उपयोगकर्ता के रूप में, कक्षा परिभाषा के निम्नलिखित दो संस्करणों में से कौन सा आप देखना पसंद करेंगे?

संस्करण A:

class Foo {
private:
   SomeType some_name; //!< State machine state

public:
   ...

   /**
    * Get the some_name data member.
    * @return Value of the some_name data member.
    */
   SomeType get_some_name () const { return some_name; }

   ...
};

संस्करण B:

/**
 * A big long comment that describes the class. This class header comment is very
 * important, but also is the most overlooked. The class is not self-documenting.
 * Why is that class here? Your comments inside the class will say what individual parts
 * do, but not what the class as a whole does. For a class, the whole is, or should be,
 * greater than the parts. Do not forget to write this very important comment.
 */
class Foo {
private:

   /**
    * A big long comment that describes the variable. Just because the variable is
    * private doesn't mean you don't have to describe it. You might have getters and
    * setters for the variable, for example.
    */
   SomeType some_name;

public:
   ...

   // Getters and setters
   ...

   // Getter for some_name. Note that there is no setter.
   SomeType get_some_name () const { return some_name; }

   ...

};

वर्जन ए में मैंने क्लास को छोड़कर हर चीज का डॉक्यूमेंटेशन किया है। सामान्य रूप से एक वर्ग स्व-दस्तावेजीकरण नहीं है। संस्करण ए में मौजूद टिप्पणियां बिल्कुल बेकार हैं, या बेकार से भी बदतर हैं। "टिप्पणी सब कुछ" रवैये के साथ यह महत्वपूर्ण समस्या है। निजी डेटा सदस्य पर उस छोटी सी टिप्पणी में कुछ भी नहीं होता है, और गेट पर टिप्पणी करने वाले का नकारात्मक मूल्य होता है। गेटटर get_some_name()को वास्तव में एक टिप्पणी की आवश्यकता नहीं है। यह क्या करता है और क्या रिटर्न देता है यह कोड से स्पष्ट रूप से स्पष्ट है। कि कोई सेटर नहीं है - आपको इसका पता लगाना होगा क्योंकि यह वहां नहीं है।

संस्करण B में मैंने वह दस्तावेज दिया है जिसमें टिप्पणी करने की आवश्यकता है। गेट करने वाले के पास डॉक्सीजन टिप्पणी नहीं है, लेकिन इसमें टिप्पणी है कि कोई सेटर नहीं है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.