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

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

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

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

 

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

** ERDDAP™ निर्भरता**

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

नोट: डिफ़ॉल्ट रूप से मैवेन स्थिर संदर्भ और डेटा संग्रह डाउनलोड का परीक्षण करेगा और केवल एक नया संस्करण डाउनलोड होने पर उन्हें निकाल देगा। पूरी तरह से डाउनलोड करने के लिए, आप सेट कर सकते हैं डाउनलोड और/or डाउनलोड Maven के लिए गुण (उदाहरण Mvn -DskipResourceडाउनलोड पैकेज ) । सम्पर्क करने का विवरण -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 or EDDGrid डेटासेट। उस उदाहरण को देखते हुए, आप कॉल कर सकते हैं '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 (इसमें कुछ वर्गों के लिंक होते हैं जिन्हें अन्यथा संकलित नहीं किया जाएगा) और परीक्षण चलाते हैं। सुरक्षा कारणों के लिए, नवीनतम संस्करणों का उपयोग करना लगभग हमेशा सबसे अच्छा होता है Java 21 और टॉमकैट 10।

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

    • हमारे javac और java classpath है कक्षाएं;./../.. /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 ) और उन्हें थोड़ा संशोधित करने के लिए समस्याओं से बचने के लिए Java 21. हमने अक्सर अन्य मामूली संशोधन किए हैं (विशेष रूप से DODS ) अन्य कारणों से।

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

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

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

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

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

  • The The most of the ERDDAP™ कक्षा में उच्चतम स्तर के तरीके हैं। यह 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 the ERDDAP™ परियोजना का प्रबंधन 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 सिर्फ यह कह रहा है कि रखरखाव बहुत सराहना की जाएगी।