यह पहले स्थान पर क्यों है?
आपने मुख्य कोड में अस्थिर कोड की जाँच की है? क्यों?
अस्थिर कोड को ट्रंक / मुख्य / मास्टर या जो भी मुख्य ट्रंक नाम है, में नहीं जांचा जाना चाहिए। इसे उच्च जोखिम विकास माना जाता है और इसके बजाय अपनी शाखा में अनुक्रमित किया जाना चाहिए जिसे आपने मुख्य रूप से जांचने के बजाय काम किया है।
मैं उन्नत SCM शाखा रणनीतियों को पढ़ने के लिए आपको (और आपकी टीम लीड) को दृढ़ता से प्रोत्साहित करूंगा । विशेष रूप से, विकास भूमिका पर ध्यान दें और उच्च जोखिम वाले विकास को क्या माना जाता है, इसके बारे में क्या कहते हैं:
सामान्य तौर पर, प्रत्येक उच्च-जोखिम परियोजना के लिए अलग-अलग शाखाओं का उपयोग करने पर विचार करें। उच्च जोखिम वाली परियोजनाओं में बड़े आकार, बड़ी संख्या में लोग, अपरिचित विषय वस्तु, अत्यधिक तकनीकी विषय वस्तु, बहुत तंग समय रेखाएं, अनिश्चित वितरण तिथियां, अपूर्ण या अस्थिर आवश्यकताएं, और भौगोलिक रूप से वितरित परियोजना टीमों की विशेषता होती है। इसी तरह, प्रत्येक रिलीज में कम जोखिम के विकास के लिए एकल शाखा को नामित करने पर विचार करें। [विंगिंग98] सहित कई स्रोत इस उद्देश्य के लिए मेनलाइन का उपयोग करने की सलाह देते हैं। कार्रवाई के इस पाठ्यक्रम को करने से पहले मेनलाइन के लिए ऊपर चर्चा किए गए कारकों पर विचार करें। कम जोखिम के विकास की मेनलाइन से अलग नीति हो सकती है, भले ही आपके पास मेनलाइन के माध्यम से समन्वयित उत्पाद परिवार के कई सदस्य हों।
लोगों को अस्थिर (या अप्रयुक्त) कोड को मेनलाइन में जाँचने देने का अर्थ है कि आप इस कोड को बनाए रखने के प्रयास के बारे में भविष्य के विकास के प्रयासों को भ्रमित करेंगे। रेप की हर शाखा और क्लोन अब से लेकर अंत तक इसमें समाहित रहेगा जब तक कि कोई "इसका डेड कोड" नहीं कहता और इसे हटा नहीं देता।
कुछ ऐसे हैं जो कहते हैं "ठीक है, अगर इसकी शाखा में यह भूल जाता है" और जबकि यह सच हो सकता है, मेनलाइन में मृत (और अस्थिर) कोड को भूल जाना कई बार बदतर होता है क्योंकि यह भविष्य के सभी विकास को हटाए जाने तक भ्रमित करता है - और तो यह और भी अधिक भूल है। "/ FooProject / शाखाओं / WeisBigIdea" (या समतुल्य) की एक अच्छी तरह से नामित शाखा भविष्य में काम करने के लिए दृश्यमान और आसान है - खासकर अगर यह काम करता है।
@Deprecated
पहली बात @Deprecated
एनोटेशन है। यह जावदॉक से आगे निकल जाता है और संकलक की चेतावनियों से बाहर निकलता है। javac
एक -deprecation
ध्वज प्रदान करता है जिसे निम्न रूप में वर्णित किया गया है:
प्रत्येक उपयोग या एक अपदस्थ सदस्य या वर्ग के ओवरराइड का विवरण दिखाएं। बिना -deprecation
, javac
स्रोत फ़ाइलों का एक सारांश दिखाता है जो उपयोग किए गए सदस्यों या वर्गों को ओवरराइड या ओवरराइड करता है। -डिप्रेशन के लिए आशुलिपि है -Xlint:deprecation
।
जैसा कि कहा गया है, यह मानक संकलक चेतावनी से ऊपर और परे जाता है।
कई आईडीई में, पदावनत विधियों और मूल्यों को एक स्ट्राइकथ्रू के साथ दिखाया गया है:
foo.bar();
और जैसे उत्पादन का उत्पादन होगा:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
आपकी बिल्ड संरचना के आधार पर, आपको बिल्ड को तोड़ने की चेतावनी हो सकती है। यह केवल तब निर्माण को तोड़ देगा जब आपकी एक कक्षा का उपयोग किया गया था (न कि यदि यह केवल बस संकलित है)।
@CustomAnnotation
इसके लिए कई दृष्टिकोण हैं। उदाहरण के लिए, लाइटवेट javac @Warning एनोटेशन जो एक एनोटेशन प्रोसेसर प्रदान करता है जो संकलन समय पर चेतावनी देता है जब उस एनोटेशन के साथ कुछ प्रयोग किया जाता है ( कस्टम एनोटेशन प्रोसेसर पर एक नेटबीन्स ट्यूटोरियल ताकि आप इस बात का अंदाजा लगा सकें कि पीछे क्या चल रहा है दृश्य)।
जावा के मेटाडाटा, भाग 2: कस्टम एनोटेशन बनाने@Unfinished
में एनोटेशन के लिए कस्टम एनोटेशन का उपयोग करने का एक उदाहरण ओरेकल भी बताता है ।
एनोटेशनप्रोसेसर के साथ , आप संकलन समय पर मनमाना कोड चला सकते हैं। यह वास्तव में आप पर निर्भर करता है कि आप क्या करना चाहते हैं। चेतावनी दें, जब कुछ का उपयोग किया जाता है तो निर्माण को तोड़ दें। इस तरह के कोड को लिखने के लिए वेब पर कई ट्यूटोरियल हैं। चाहे आप एक त्रुटि उत्पन्न करना चाहते हैं जब इसके संकलित (यह कष्टप्रद होगा और इसे हटाए जाने की ओर ले जाएगा) या यदि इसका उपयोग (लिखने के लिए थोड़ा और अधिक जटिल)।
ध्यान दें कि यह सब वास्तव में एनोटेशन प्रोसेसर का उपयोग करने के लिए बिल्डरों को बदलने का अर्थ है।