मुख्य सामग्री पर जाएं

प्रोग्रामर गाइड

ये केवल एक प्रोग्रामर हैं जो काम करने का इरादा रखते हैंERDDAP'Javaकक्षाओं को जानने की जरूरत है।

स्रोत कोड प्राप्त करना

 

  • Via Source Code on GitHub हाल के सार्वजनिक संस्करणों और विकास संस्करणों के लिए स्रोत कोड भी उपलब्ध हैगिटहब। कृपया पढ़िएविकीउस परियोजना के लिए। यदि आप स्रोत कोड को संशोधित करना चाहते हैं (और संभवतः परिवर्तन मानक में शामिल किया गया हैERDDAP™वितरण) , यह अनुशंसित दृष्टिकोण है।

ERDDAP™निर्भरता

ERDDAP™कोड निर्भरता के साथ-साथ कुछ स्थिर संदर्भ फ़ाइलों को लोड करने के लिए Maven का उपयोग करता है (वेबिनार) । यह भंडार में कई बड़ी फ़ाइलों को संग्रहीत करने से बचने के लिए किया जाता है। आप mvn compile का उपयोग कर सकते हैं और यह निर्भरता और फ़ाइलों को परिष्कृत करेगा। आप एक युद्ध फ़ाइल उत्पन्न करने के लिए mvn पैकेज का भी उपयोग कर सकते हैं। आप मैन्युअल रूप से रेफरी फ़ाइलों को डाउनलोड कर सकते हैं:

  • E-Mail _ साइटमैप.zipइसे /WEB-INF/ref/ में खोलना।

  • फ़ाइल.zipइसे /WEB-INF/ref/ में खोलना।

  • erddapContent.zip (संस्करण 1.0.0, 20333 बाइट्स, MD5=2B8D2A5AE5ED73E3A42B529C168C60B5, दिनांक 2024-10-14) To unzip it in tomcat.tomcat/content/erddap।

नोट: डिफ़ॉल्ट रूप से मैवेन स्थिर संदर्भ और डेटा संग्रह डाउनलोड का परीक्षण करेगा और केवल एक नया संस्करण डाउनलोड होने पर उन्हें निकाल देगा। पूरी तरह से डाउनलोड करने के लिए, आप skipResourceDownload और/or skipTestResourceDownload गुण सेट कर सकते हैं। (उदाहरण के लिए mvn-DskipResourceDownload पैकेज ) । निष्कर्षण को मजबूर करने के लिए, Ddownload.unpack=true और Ddownload.unpackWhenChanged=false सेट करें।

  • ERDDAP™और इसके उपमहाद्वीप बहुत उदार, खुला स्रोत हैंलाइसेंसइसलिए आप किसी भी उद्देश्य के लिए स्रोत कोड का उपयोग और संशोधित कर सकते हैं। ध्यान दें किERDDAP™और कई उप-घटकों में लाइसेंस होते हैं जिनकी आवश्यकता होती है कि आप उस कोड के स्रोत को स्वीकार करते हैं जिसका आप उपयोग कर रहे हैं। देखेंऋण। चाहे आवश्यकता हो या नहीं, इन सभी योगदानकर्ताओं को स्वीकार करने के लिए यह सिर्फ अच्छा रूप है।

  • अन्य परियोजनाओं के लिए कोड का उपयोग करें

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

हाफवे

या, वहाँ एक और दृष्टिकोण है जिसे आप उपयोगी पा सकते हैं जो कि डेढ़वे बीच में हैERDDAPकोड और उपयोगERDDAP™एक स्टैंड-अलोन वेब सेवा के रूप में: EDD कक्षा में, एक स्थिर विधि है जो आपको डेटासेट का एक उदाहरण बनाने देता है (विनिर्देश के आधार परdatasets.xml) : oneFromDataset एक्सएमएल (स्ट्रिंग TDatasetID) It रिटर्न एक उदाहरण के लिए EDDTable orEDDGridडेटासेट। उस उदाहरण को देखते हुए, आप कॉल कर सकते हैं 'MakeNewFileForDapQuery' (स्ट्रिंग उपयोगकर्ताDapQuery, स्ट्रिंग dir, स्ट्रिंग फ़ाइलनाम, स्ट्रिंग फ़ाइल टाइपनाम) एक विशिष्ट फ़ाइल टाइप के डेटा फ़ाइल बनाने के लिए उदाहरण को बताने के लिए, उपयोगकर्ता क्वेरी के परिणामों के साथ। इस प्रकार, यह उपयोग करने का एक सरल तरीका हैERDDAPडेटा का अनुरोध करने और जवाब में फ़ाइल प्राप्त करने के तरीके, जैसे ही क्लाइंट उपयोग करेगाERDDAP™वेब अनुप्रयोग। लेकिन यह दृष्टिकोण आपके भीतर काम करता हैJavaकार्यक्रम और टॉमकैट जैसे अनुप्रयोग सर्वर की आवश्यकता को बायपास करता है। हम EDDTable के कई यूनिट परीक्षणों के लिए इस दृष्टिकोण का उपयोग करते हैं औरEDDGridइसलिए आप उन सभी वर्गों के लिए स्रोत कोड में इस के उदाहरण देख सकते हैं।

विकास वातावरण

  • इसके लिए विन्यास हैंजेटीऔरडोकरगिटहब में, हालांकि टॉमकैट में रिलीज होने की उम्मीद है।

  • वैकल्पिक : सेट अपERDDAP™टॉमकैट में चूंकिERDDAP™मुख्य रूप से टॉमकैट में चल रहे एक servlet होने का इरादा है, हम दृढ़ता से अनुशंसा करते हैं कि आप मानक का पालन करेंस्थापना निर्देशटॉमकैट स्थापित करने के लिए और फिर स्थापित करने के लिएERDDAP™टॉमकैट की वेबअप डायरेक्टरी में। अन्य बातों के अलावा,ERDDAP™टॉमकैट की निर्देशिका संरचना में स्थापित किया गया था और टॉमकैट को कुछ .jar फ़ाइलों को प्रदान करने की उम्मीद थी।

  • ERDDAP™किसी विशिष्ट आईडीई की आवश्यकता नहीं है (क्रिस मुख्य रूप से विजुअल स्टूडियो कोड का उपयोग करता है, बॉब ने एडिटप्लस का इस्तेमाल किया) । हम ग्रहण, चींटी आदि का उपयोग नहीं करते; और न ही हम पेशकश करते हैंERDDAP-उनके लिए संबंधित समर्थन। परियोजना Maven का उपयोग करती है।

  • हम एक बैच फ़ाइल का उपयोग करते हैं जो स्रोत पेड़ में सभी वर्ग फ़ाइलों को हटा देता है ताकि यह सुनिश्चित किया जा सके कि हमारे पास एक स्वच्छ संकलन है। (जावा के साथ) ।

  • हम वर्तमान में एडॉप्टियम के javac jdk-21.0.3+9 का उपयोग करते हैं ताकि gov.noaa.pfeg.coastwatch.Testall (इसमें कुछ वर्गों के लिंक होते हैं जिन्हें अन्यथा संकलित नहीं किया जाएगा) और परीक्षण चलाते हैं। सुरक्षा कारणों के लिए, नवीनतम संस्करणों का उपयोग करना लगभग हमेशा सबसे अच्छा होता हैJava21 और टॉमकैट 10।

    • जब हम जावा चलाते हैं, तो वर्तमान निर्देशिका है tomcat/webapps/erddap/WEB-INF.

    • हमारे javac और java classpath है classes;../../.. /lib/servlet-api.jar;lib/*

    • इसलिए आपकी जेवैक कमांड लाइन कुछ ऐसी ही होगी जैसे javac-encoding UTF-8 -cp class;../../.. /lib/servlet-api.jar;lib/* class/gov/noaa/pfel/coastwatch/Testall.java

    • और आपका जावा कमांड लाइन कुछ ऐसा होगा जैसे java-cp class; ../../.. /lib/servlet-api.jar;lib/* -Xmx4000M -Xms4000M कक्षाएं/सरकारी/noaa/pfel/coastwatch/Testall 'वैकल्पिक: आप verbose: gc` जोड़ सकते हैं, जो बताते हैंJavaकचरा संग्रह आंकड़े प्रिंट करने के लिए।

    • अगर टेस्ट सभी संकलन, सब कुछERDDAP™आवश्यकता को संकलित किया गया है। कुछ वर्गों को संकलित किया जाता है कि आवश्यकता नहीं हैERDDAP™। यदि Compiling TestAll सफल होता है लेकिन कुछ वर्गों को संकलित नहीं करता है, तो उस वर्ग की जरूरत नहीं है। (कुछ अधूरे/अप्रयुक्त वर्ग हैं।)

  • कुछ मामलों में, हम इसके बजाय तीसरे पक्ष के स्रोत कोड का उपयोग करते हैं। (विशेष रूप सेDODS) और उन्हें थोड़ा संशोधित करने के लिए समस्याओं से बचने के लिएJava21. हमने अक्सर अन्य मामूली संशोधन किए हैं (विशेष रूप सेDODS) अन्य कारणों से।

  • अधिकांश कक्षाओं में उनके संबद्ध src/test फ़ाइल में परीक्षण विधियां हैं। आप mvn test कमांड के साथ JUnit परीक्षण चला सकते हैं। यह डेटा की कई ज़िप फ़ाइलों को डाउनलोड करेगा जो परीक्षण की नवीनतम रिलीज से निर्भर करता हैERDDAP/erddap टेस्ट.   नोट: मैवेन कैश डाउनलोड लेकिन प्रत्येक निष्पादन पर डाउनलोड किए गए अभिलेखागार को खोलना होगा, जो समय लेता है। डाउनलोड करना और unzipping परीक्षण डेटा अभिलेखागार, आप निर्दिष्ट कर सकते हैं skipTestResourceDownload Property to Maven (उदाहरण के लिए mvn-DskipTestResourceDownload पैकेज ) ।

महत्वपूर्ण वर्ग

यदि आप स्रोत कोड को देखना चाहते हैं और यह जानने की कोशिश करते हैं कि कैसेERDDAP™काम करता है, कृपया करते हैं।

  • कोड हैJavaडोक टिप्पणियां, लेकिनJavaडॉक्स उत्पन्न नहीं किया गया है। उन्हें उत्पन्न करने के लिए स्वतंत्र महसूस करें।

  • सबसे महत्वपूर्ण कक्षाएं (नीचे उल्लिखित लोगों सहित) सरकारी/noaa/pfel/erddap के भीतर हैं।

  • The The most of theERDDAP™कक्षा में उच्चतम स्तर के तरीके हैं। यह HttpServlet का विस्तार करता है।

  • ERDDAP™उपवर्गों के उदाहरणों के लिए अनुरोधEDDGridया EDDTable, जो व्यक्तिगत डेटासेट का प्रतिनिधित्व करता है।

  • EDStatic में स्थिर जानकारी और सेटिंग्स का अधिकांश हिस्सा है (उदाहरण के लिए, सेटअप.xml और संदेश.xml फ़ाइलों से) और स्थिर सेवाएं प्रदान करता है (उदाहरण के लिए, ईमेल भेजना) ।

  • EDDGridऔर EDDTable subclasses अनुरोध को पार्स करते हैं, उपशीर्षक-विशिष्ट तरीकों से डेटा प्राप्त करते हैं, फिर जवाब के लिए डेटा प्रारूपित करते हैं।

  • EDDGridसबक्लास डेटा को ग्रिडडाटाअक्सर में धक्का देते हैं (ग्रिड डेटा के लिए आंतरिक डेटा कंटेनर) ।

  • EDDTable subclasses tableWriter subclasses में डेटा धक्का, जो एक विशिष्ट फ़ाइल प्रकार पर-fly के लिए डेटा लिखने।

  • अन्य कक्षाएं (उदाहरण के लिए, निम्न स्तर वर्ग) यह भी महत्वपूर्ण है, लेकिन यह कम संभावना है कि आप उन्हें बदलने के लिए काम करेंगे।  

कोड योगदान

  • GitHub मुद्दे यदि आप योगदान करना चाहते हैं, लेकिन एक परियोजना नहीं है, तो सूची देखेंGitHub मुद्देजिनमें से कई परियोजनाएं आप ले सकते हैं। यदि आप किसी मुद्दे पर काम करना चाहते हैं, तो कृपया उसे दूसरों को इंगित करने के लिए निर्दिष्ट करें जो आप उस पर काम कर रहे हैं। गिटहब मुद्दा उस मुद्दे पर काम के साथ आगे बढ़ने के लिए किसी भी प्रश्न पर चर्चा करने का सबसे अच्छा स्थान है।

  • यदि आप जो बदलाव करना चाहते हैं, वह नीचे दिए गए सामान्य मामलों में से एक है, तो कृपया एक सामान्य मामला बनाएं।GitHub मुद्दाआप जिस बदलाव को बनाने का इरादा रखते हैं उसे दर्शाता है। फिर एक बार परिवर्तन पूरा होने के बाद, विलय का अनुरोध करने के लिए एक पुल अनुरोध करें। आम परिवर्तनों में शामिल हैं:

    • आप का एक और उपश्रेणी लिखना चाहते हैंEDDGridया EDDTable दूसरे डेटा स्रोत प्रकार को संभालने के लिए। यदि हां, तो हम अनुशंसा करते हैं कि आप निकटतम मौजूदा उपश्रेणी पाते हैं और उस कोड को एक प्रारंभिक बिंदु के रूप में उपयोग करते हैं।

    • आप अन्य saveAs_Filetype_ मेथड लिखना चाहते हैं। यदि ऐसा है, तो हम अनुशंसा करते हैं कि आपको निकटतम मौजूदा saveAs_Filetype_ मेथड मिल जाएEDDGridया EDDTable और उस कोड को एक प्रारंभिक बिंदु के रूप में उपयोग करें।

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

  • यदि आपके पास ऐसा फीचर है जो ऊपर नहीं कवर किया गया है तो आप जोड़ना चाहते हैं।ERDDAP, पहले में एक चर्चा धागा बनाने की सिफारिश की जाती हैGitHub चर्चा। महत्वपूर्ण विशेषताओं / परिवर्तन के लिए तकनीकी बोर्ड उन पर चर्चा करेगा और यह तय करेगा कि क्या इसे जोड़ने की मंजूरी दे दी जाएERDDAP™।

अपने कोड योगदान को न्याय करना

यदि आप कोड या अन्य परिवर्तनों को शामिल करना चाहते हैं तो इसमें शामिल होने के लिएERDDAPवह महान है। आपके योगदान को स्वीकार करने के लिए कुछ मानदंडों को पूरा करने की आवश्यकता है। यदि आप नीचे दिए गए दिशानिर्देशों का पालन करते हैं, तो आप अपने योगदान की संभावनाओं को काफी बढ़ाते हैं।  

  • The The most of theERDDAP™परियोजना का प्रबंधन NATD द्वारा किया जाता है (NOAAनियुक्त तकनीकी निदेशक) तकनीकी बोर्ड से इनपुट के साथ। 2007 से (शुरुआतERDDAP) 2022 तक, यह बॉब सिमोन था (संस्थापक नेता) । जनवरी 2023 में शुरू हुआ, यह क्रिस जॉन है। मूल रूप से, NATD के लिए जिम्मेदार हैERDDAPइसलिए, उसके पास निर्णयों पर अंतिम शब्द हैERDDAP™कोड, विशेष रूप से डिजाइन के बारे में और क्या किसी दिए गए पुल अनुरोध को स्वीकार किया जाएगा या नहीं। यह आंशिक रूप से दक्षता कारणों के लिए होना चाहिए (यह लिनस टोर्वाल्ड्स और लिनक्स के लिए बहुत अच्छा काम करता है) और आंशिक रूप से सुरक्षा कारणों के लिए: किसी को आईटी सुरक्षा लोगों को बताना पड़ता है जो कोड की सुरक्षा और अखंडता के लिए ज़िम्मेदारी लेता है।  

  • NATD यह गारंटी नहीं देता कि वह आपका कोड स्वीकार करेगा। यदि कोई प्रोजेक्ट अभी काम नहीं करता है और साथ ही हम उम्मीद करते थे और अगर यह साल्व नहीं किया जा सकता है, तो NATD में परियोजना शामिल नहीं होगी।ERDDAP™वितरण। कृपया बुरा महसूस न करें। कभी-कभी परियोजनाओं के साथ-साथ उम्मीद नहीं की जाती। यह सभी सॉफ्टवेयर डेवलपर्स के लिए होता है। यदि आप नीचे दिए गए निर्देशों का पालन करते हैं, तो आप अपनी सफलता की संभावनाओं को काफी बढ़ाते हैं।  

  • यह सबसे अच्छा है अगर परिवर्तन सामान्य रुचि और उपयोगिता के हैं। यदि कोड आपके संगठन के लिए विशिष्ट है, तो शायद इसकी एक अलग शाखा को बनाए रखना सबसे अच्छा है।ERDDAP™अपने उपयोग के लिए। Axiom यह करता है। दुर्भाग्यवश, गिट ऐसा करना आसान बनाता है। NATD के लिए एक सुसंगत दृष्टि बनाए रखना चाहता हैERDDAP, यह एक रसोई सिंक परियोजना बनने की अनुमति नहीं है जहां हर कोई अपनी परियोजना के लिए एक कस्टम सुविधा जोड़ता है।  

  • पालन करेंJavaकोड कन्वेंशन। सामान्य तौर पर, आपका कोड अच्छी गुणवत्ता होना चाहिए और मूल का पालन करना चाहिएJavaकोड कन्वेंशन: निर्देशिका संरचना में उचित स्थान पर .class फ़ाइलों को डालें, .class फ़ाइलों को एक उचित नाम दें, उचित रूप से शामिल करेंJavaडॉक टिप्पणियां, कोड के प्रत्येक पैराग्राफ के प्रारंभ में शामिल //टिप्पणियां, 4 स्पेस के साथ इंडेंट (टैब नहीं) , रेखाओं से बचें > 80 वर्ण आदि। सम्मेलनों में परिवर्तन और स्रोत कोड हमेशा पूरी तरह से तारीख तक नहीं है। जब संदेह में, सम्मेलनों के लिए मैच कोड और मौजूदा कोड नहीं।

  • वर्णनात्मक वर्ग, विधि और परिवर्तनीय नामों का उपयोग करें। यह कोड दूसरों के लिए पढ़ने के लिए आसान बनाता है।  

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

  • शुरू होने से पहले तकनीकी बोर्ड के साथ काम करें। यदि आप अपने कोड परिवर्तन को प्राप्त करने की उम्मीद करते हैं, तो आपके कोड में बदलाव आएगा।ERDDAP™तकनीकी बोर्ड निश्चित रूप से इस बात के बारे में बात करना चाहता है कि आप क्या कर रहे हैं और कैसे आप इसे करने से पहले क्या कर रहे हैं? इस तरह, हम आपको उन परिवर्तनों से बच सकते हैं जो NATD को अंत में स्वीकार नहीं करते हैं। जब आप काम कर रहे हैं, तो NATD और तकनीकी बोर्ड मौजूदा कोड को समझने में आपकी मदद करने के लिए सवालों का जवाब देने के लिए तैयार है और (समग्र) कैसे अपनी परियोजना से निपटने के लिए।  

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

  • बग से बचें। यदि एक बग जारी होने से पहले नहीं पकड़ा जाता है, तो यह उपयोगकर्ताओं के लिए समस्याओं का कारण बनता है (सबसे अच्छा) , गलत जानकारी देता है (खराब) , पर एक blot हैERDDAP'की प्रतिष्ठा' और आउट-ऑफ-डेट पर बने रहेंगेERDDAP™साल के लिए स्थापना। बग से बचने के लिए बहुत मेहनत करें। इसका हिस्सा साफ कोड लिख रहा है (इसलिए समस्याओं को देखना आसान है) । इसका हिस्सा इकाई परीक्षण लिख रहा है। इसका हिस्सा जब आप कोड लिखते हैं तो बग से बचने का एक निरंतर दृष्टिकोण है। अपने कोड को जोड़ने के लिए NATD को अफसोस न करेंERDDAP™।  

  • एक इकाई परीक्षण या परीक्षण लिखें। नए कोड के लिए, आपको एक परीक्षण फ़ाइल में JUnit परीक्षण लिखना चाहिए। कृपया कम से कम एक व्यक्तिगत परीक्षण विधि लिखें जो आपके द्वारा लिखे गए कोड का पूरी तरह से परीक्षण करता है और इसे कक्षा के JUnit परीक्षण फ़ाइल में जोड़ देता है ताकि यह स्वचालित रूप से चल सके। यूनिट (संबंधित) परीक्षण शुरू में बग को पकड़ने का सबसे अच्छा तरीका है, और लंबे समय तक चलने में (अन्य चीज़ों में बदलावERDDAP™) । जैसा कि बॉब ने कहा, "एक परीक्षण क्या मुझे रात में सोने देता है"।  

  • NATD के लिए अपने पुल अनुरोध में बदलाव को समझने और स्वीकार करने में आसान है। इसका हिस्सा एक इकाई परीक्षण विधि लिख रहा है (s) । इसका हिस्सा कोड के एक अनुभाग में आपके परिवर्तनों को सीमित कर रहा है (या एक वर्ग) यदि संभव हो तो। NATD कोड भर में सैकड़ों परिवर्तनों के साथ किसी भी पुल अनुरोध को स्वीकार नहीं करेगा। NATD आईटी सुरक्षा लोगों को बताता है जो कोड की सुरक्षा और अखंडता के लिए जिम्मेदारी लेता है। यदि बहुत सारे बदलाव होते हैं या उन्हें बाहर निकालने के लिए बहुत कठिन होते हैं, तो परिवर्तनों को सत्यापित करना बहुत कठिन होता है और बग्स या सुरक्षा मुद्दों को पेश नहीं करता है।  

  • इसे सरल रखें। आपके कोड के लिए एक अच्छा समग्र विषय है: इसे सरल रखें। सरल कोड दूसरों के लिए आसान है (भविष्य में आप सहित) पढ़ने और बनाए रखने के लिए। यह समझने में आसान है और इस प्रकार स्वीकार करना।  

  • अपने कोड के लिए लंबी अवधि की जिम्मेदारी की गणना करें। लंबे समय तक, यह सबसे अच्छा है यदि आप अपने कोड को बनाए रखने और उसके बारे में सवालों का जवाब देने के लिए चल रहे दायित्व को मानते हैं। (उदाहरण के लिए, मेंERDDAP™गूगल ग्रुप) । कुछ लेखकों के नोट के रूप में, कोड एक दायित्व के साथ-साथ परिसंपत्ति भी है। यदि भविष्य में एक बग खोजा जाता है, तो यह सबसे अच्छा है यदि आप इसे ठीक करते हैं क्योंकि कोई आपके कोड को बेहतर नहीं जानता है (यह भी कि पहले स्थान पर बग से बचने के लिए एक प्रोत्साहन है) । NATD जारी रखरखाव प्रदान करने के लिए एक फर्म प्रतिबद्धता के लिए नहीं पूछ रहा है। NATD सिर्फ यह कह रहा है कि रखरखाव बहुत सराहना की जाएगी।