Μετάβαση στο κύριο περιεχόμενο

Οδηγός προγραμματιστή

Αυτά είναι πράγματα που μόνο ένας προγραμματιστής που σκοπεύει να συνεργαστεί μεERDDAPΣJavaΤα μαθήματα πρέπει να ξέρουν.

Λήψη του πηγαίου κώδικα

 

  • Μέσω πηγαίου κώδικα στο GitHub Ο πηγαίος κώδικας για τις πρόσφατες δημόσιες εκδόσεις και εκδόσεις στην ανάπτυξη είναι επίσης διαθέσιμος μέσωGitHub. Παρακαλώ διαβάστε τοWikiγια αυτό το έργο. Αν θέλετε να τροποποιήσετε τον πηγαίο κώδικα (και ενδεχομένως οι αλλαγές να έχουν ενσωματωθεί στο πρότυποERDDAP™διανομή) , αυτή είναι η συνιστώμενη προσέγγιση.

ERDDAP™εξαρτήσεις

ERDDAP™χρησιμοποιεί Maven για να φορτώσει εξαρτήσεις κώδικα, καθώς και κάποια στατικά αρχεία αναφοράς (WEB-INF/ref) . Αυτό γίνεται για να αποφευχθεί η αποθήκευση πολλών μεγάλων αρχείων στο χώρο αποθήκευσης. Μπορείτε να χρησιμοποιήσετε mvn μεταγλώττιση και ότι θα φέρει τις εξαρτήσεις και τα αρχεία ref. Μπορείτε επίσης να χρησιμοποιήσετε mvn πακέτο για να δημιουργήσετε ένα αρχείο πολέμου. Μπορείτε να κατεβάσετε χειροκίνητα τα αρχεία ref:

  • ετοπο1\_ice\_g\_i2.zipκαι ξεκουμπώστε το σε /WEB-INF/ref/ .

  • ref\_files.zipκαι ξεκουμπώστε το σε /WEB-INF/ref/ .

  • erddapΠεριεχόμενο.zip (έκδοση 1.0.0, 20333 bytes, MD5=2B8D2A5AE5ED73E3A42B529C168C60B5, με ημερομηνία 2024-10-14) και αποσυμπίεση σε tomcat, δημιουργία_tomcat_/content/erddap.

ΣΗΜΕΙΩΣΗ: Από προεπιλογή Maven θα cache στατική αναφορά και δοκιμή αρχείο δεδομένων λήψεις και να εξαγάγετε τους μόνο όταν μια νέα έκδοση έχει κατεβάσει. Για να παρακάμψετε εντελώς τη λήψη, μπορείτε να ορίσετε τις ιδιότητες skipResourceDownload ή/και skipTestResourceDownload σε Maven (π.χ. mvn -DskipResourceDownload package «) . Για να εξαναγκάσετε την εξαγωγή, ρυθμίστε -Ddownload.unpack=trueκαι-Ddownload. unpackΌταν Changed=false'.

  • ERDDAP™και οι υποσυντάκτες του έχουν πολύ φιλελεύθερη, ανοιχτή πηγήΆδειες, ώστε να μπορείτε να χρησιμοποιήσετε και να τροποποιήσετε τον πηγαίο κώδικα για οποιοδήποτε σκοπό, για κερδοσκοπικό ή μη κερδοσκοπικό. Σημειώστε ότιERDDAP™και πολλοί υποσυντάκτες έχουν άδειες που απαιτούν να αναγνωρίζετε την πηγή του κώδικα που χρησιμοποιείτε. Βλέπεις;Πιστώσεις. Είτε απαιτείται είτε όχι, είναι απλώς καλή μορφή η αναγνώριση όλων αυτών των συντελεστών.

  • Χρήση του κώδικα για άλλα έργα

Ενώ είστε ευπρόσδεκτοι να χρησιμοποιήσετε μέρη τουERDDAP™Κωδικός για άλλα έργα, να ειδοποιηθεί ότι ο κώδικας μπορεί και θα αλλάξει. Δεν υποσχόμαστε να υποστηρίξουμε άλλες χρήσεις του κώδικα μας. Git και GitHub θα είναι οι κύριες λύσεις σας για την αντιμετώπιση αυτού -- Git σας επιτρέπει να συγχωνεύσετε τις αλλαγές μας στις αλλαγές σας. Για πολλές περιπτώσεις όπου μπορεί να μπείτε στον πειρασμό να χρησιμοποιήσετε μέρη τουERDDAP™στο έργο σας, πιστεύουμε ότι θα το βρείτε πολύ πιο εύκολο να εγκαταστήσετε και να χρησιμοποιήσετεERDDAP™Όπως είναι, και στη συνέχεια να γράψετε άλλες υπηρεσίες που χρησιμοποιούνERDDAPΟι υπηρεσίες του. Μπορείτε να στήσετε το δικό σαςERDDAP™εγκατάσταση σε μια ή δύο ώρες. Μπορείτε να στήσετε το δικό σαςERDDAP™εγκατάσταση με γυαλισμένο τρόπο σε λίγες ημέρες (ανάλογα με τον αριθμό και την πολυπλοκότητα των συνόλων δεδομένων σας) . Αλλά hacking μέρη τουERDDAP™για το δικό σας έργο είναι πιθανό να πάρει εβδομάδες (και μήνες για να πιάσει λεπτότητες) και θα χάσετε τη δυνατότητα να ενσωματώσετε αλλαγές και διορθώσεις σφαλμάτων από τις επόμενεςERDDAP™Απελευθερώνει. Εμείς (Προφανώς.) νομίζω ότι υπάρχουν πολλά οφέλη στη χρήσηERDDAP™Όπως είναι και να κάνει σαςERDDAP™εγκατάσταση προσβάσιμη στο κοινό. Ωστόσο, σε ορισμένες περιπτώσεις, μπορεί να μην θέλετε να κάνετεERDDAP™εγκατάσταση προσβάσιμη στο κοινό. Στη συνέχεια, η υπηρεσία σας μπορεί να έχει πρόσβαση και να χρησιμοποιεί το ιδιωτικό σαςERDDAP™και οι πελάτες σας δεν χρειάζεται να γνωρίζουν γιαERDDAP™.

Στα μισά του δρόμου

Ή, υπάρχει μια άλλη προσέγγιση την οποία μπορεί να βρείτε χρήσιμη, η οποία είναι στη μέση μεταξύ της μελέτης σεERDDAPΚωδικός και χρήσηERDDAP™ως αυτόνομη υπηρεσία ιστού: Στην τάξη EDD, υπάρχει μια στατική μέθοδος που σας επιτρέπει να κάνετε μια περίπτωση ενός συνόλου δεδομένων (με βάση τις προδιαγραφέςdatasets.xml) : «ένα από το σύνολο δεδομένων Xml (συμβολοσειρά tDatasetID) «Επιστρέφει μια περίπτωση ενός πίνακα EDD ήEDDGridΣύστημα δεδομένων. Λαμβάνοντας υπόψη αυτή την περίπτωση, μπορείτε να καλέσετε - 'makeNewFileForDapQuery (Χρήστης συμβολοσειρώνDapQuery, dir συμβολοσειρών, αρχείο συμβολοσειρώνName, αρχείο συμβολοσειρών ΤύποςName) `για να πείτε στην περίπτωση να κάνει ένα αρχείο δεδομένων, ενός συγκεκριμένου τύπου αρχείων, με τα αποτελέσματα από ένα ερώτημα χρήστη. Έτσι, αυτός είναι ένας απλός τρόπος χρήσηςERDDAPΜέθοδοι για να ζητήσει δεδομένα και να πάρει ένα αρχείο σε απάντηση, ακριβώς όπως ένας πελάτης θα χρησιμοποιήσει τοERDDAP™εφαρμογή ιστού. Αλλά αυτή η προσέγγιση λειτουργεί μέσα σαςJavaπρόγραμμα και παρακάμπτει την ανάγκη για έναν διακομιστή εφαρμογών όπως Tomcat. Χρησιμοποιούμε αυτή την προσέγγιση για πολλές από τις δοκιμές μονάδας του EDDTable καιEDDGridυποκλάσεις, έτσι μπορείτε να δείτε παραδείγματα αυτού στον πηγαίο κώδικα για όλες αυτές τις τάξεις.

Αναπτυξιακό περιβάλλον

  • Υπάρχουν ρυθμίσεις γιαΤζέτι.καιΝτόκερστο GitHub, αν και οι κυκλοφορίες αναμένεται να τρέχουν στο Tomcat.

  • Προαιρετικό : SetERDDAP™στην Tomcat\ ΑπόERDDAP™προορίζεται κυρίως να είναι ένα σέρβις τρέχει σε Tomcat, σας συνιστούμε έντονα να ακολουθήσετε το πρότυποοδηγίες εγκατάστασηςνα εγκαταστήσει Tomcat, και στη συνέχεια να εγκαταστήσειERDDAP™στον κατάλογο εφαρμογών του Tomcat. Μεταξύ άλλων,ERDDAP™σχεδιάστηκε για να εγκατασταθεί στη δομή καταλόγου Tomcat και αναμένει Tomcat να παρέχει κάποια αρχεία .jar.

  • ERDDAP™δεν απαιτεί συγκεκριμένη IDE (Ο Chris χρησιμοποιεί κυρίως Visual Studio Code, ο Bob χρησιμοποίησε το EditPlus) . Δεν χρησιμοποιούμε Eclipse, Ant, κ.λπ.; ούτε προσφέρουμεERDDAP- που σχετίζονται με την υποστήριξη τους. Το έργο χρησιμοποιεί την Μέιβεν.

  • Χρησιμοποιούμε ένα αρχείο παρτίδας που διαγράφει όλα τα αρχεία .class στο δέντρο πηγής για να εξασφαλίσει ότι έχουμε μια καθαρή μεταγλώττιση (με javac) .

  • Προς το παρόν χρησιμοποιούμε το javac jdk-21.0.3+9 του Adetium για τη συλλογή του gov.noaa.pfeg.coastwatch.TestAllAll (Έχει συνδέσμους με μερικά μαθήματα που δεν θα συντασσόντουσαν διαφορετικά.) και κάνε τις εξετάσεις. Για λόγους ασφαλείας, είναι σχεδόν πάντα καλύτερο να χρησιμοποιήσετε τις τελευταίες εκδόσεις τουJava21 και Tomcat 10.

    • Όταν τρέχουμε javac ή java, ο τρέχων κατάλογος είναι tomcat/webapps/erdap/WEB-INF .

    • Το τζάβακ και το τζάβα είναι «κλάσεις;./../../lib/servlet-api.jar;lib/*`

    • Οπότε η γραμμή εντολών του Τζάβακ θα είναι σαν... «javac-encoding UTF-8-cp classes?./../lib/servlet-api.jar;lib/* classes/gov/noaa/pfel/coastwatch/TestAll.java`»

    • Και η γραμμή εντολών του java θα είναι σαν... Κλάσεις «java-cp;./.././lib/servlet-api.jar;lib/* -Xmx4000M -Xms4000M Κατηγορίες/gov/noaa/pfel/coastwatch/TestAll «Προαιρετικό: μπορείτε να προσθέσετε -verbose:gc, η οποία λέειJavaγια την εκτύπωση στατιστικών συλλογής απορριμμάτων.

    • Αν γίνει δοκιμή Όλες οι μεταγλωττίσεις, τα πάνταERDDAP™οι ανάγκες έχουν συγκεντρωθεί. Μερικές τάξεις έχουν συνταχθεί που δεν χρειάζονται γιαERDDAP™. Αν η κατάρτιση TestAll επιτύχει αλλά δεν συγκεντρώσει κάποια τάξη, αυτή η τάξη δεν χρειάζεται. (Υπάρχουν κάποια ημιτελή/άχρηστα μαθήματα.)

  • Σε λίγες περιπτώσεις, χρησιμοποιούμε τον πηγαίο κώδικα 3ου μέρους αντί για αρχεία .jar (κυρίως γιαDODS) και έχουν τροποποιηθεί ελαφρά για να αποφευχθεί η δημιουργία προβλημάτωνJava21. Έχουμε κάνει συχνά άλλες μικρές τροποποιήσεις (κυρίως γιαDODS) για άλλους λόγους.

  • Οι περισσότερες κατηγορίες έχουν μεθόδους δοκιμών στο σχετικό αρχείο src/test τους. Μπορείτε να εκτελέσετε τις δοκιμές Junit με την εντολή mvn δοκιμή'. Αυτό θα κατεβάσει πολλά αρχεία zip των δεδομένων στα οποία βασίζονται οι δοκιμές από την τελευταία κυκλοφορία του[ERDDAP/erddap Δοκιμή](https://github.com/ERDDAP/erddapTest/releases/).\\   ΣΗΜΕΙΩΣΗ: Maven caches downloads αλλά θα unzip τα αρχεία που έχουν ληφθεί σε κάθε εκτέλεση, η οποία παίρνει χρόνο. Για να παραλείψετε τη λήψη και unzipping αρχεία δεδομένων δοκιμών, μπορείτε να καθορίσετε την ιδιότητα skipTestResourceDownloadστην Maven (π.χ.mvn -DskipTestResourceDownload package «) .

Σημαντικές Κλάσεις

Αν θέλετε να δείτε τον πηγαίο κώδικα και να προσπαθήσετε να βρείτε τον τρόποERDDAP™Δουλεύει, παρακαλώ.

  • Ο κωδικός έχειJavaΣυζητήσεις του Ευρωπαϊκού ΚοινοβουλίουJavaΟι γιατροί δεν έχουν δημιουργηθεί. Μπορείτε ελεύθερα να τα δημιουργήσετε.

  • Οι πιο σημαντικές τάξεις (συμπεριλαμβανομένων των κατωτέρω αναφερόμενων) είναι εντός της Gov/noaa/pfel/erddap.

  • ΗERDDAP™η τάξη έχει τις μεθόδους υψηλότερου επιπέδου. Εκτείνεται HttpServlet.

  • ERDDAP™εγκρίνει αιτήσεις σε περιπτώσεις υποκατηγοριώνEDDGridή EDDTable, τα οποία αντιπροσωπεύουν μεμονωμένα σύνολα δεδομένων.

  • Το EDStatic έχει τις περισσότερες στατικές πληροφορίες και ρυθμίσεις (π.χ. από τα αρχεία setup.xml και message.xml) και προσφέρει στατικές υπηρεσίες (π.χ. αποστολή ηλεκτρονικού ταχυδρομείου) .

  • EDDGridκαι EDDTable υποκλάσεις αναλύουν το αίτημα, να πάρει τα δεδομένα από την υποκατηγορία-ειδικές μεθόδους, στη συνέχεια, διαμορφώνουν τα δεδομένα για την απάντηση.

  • EDDGridυποκλάσεις ωθούν τα δεδομένα στο GridDataAccessor (το εσωτερικό δοχείο δεδομένων για τα πλέγματα δεδομένα) .

  • Οι υποκλάσεις EDDTable ωθούν τα δεδομένα στις υποκλάσεις TableWriter, οι οποίες γράφουν δεδομένα σε έναν συγκεκριμένο τύπο αρχείου on-the-fly.

  • Άλλες κατηγορίες (π.χ., τάξεις χαμηλού επιπέδου) είναι επίσης σημαντικά, αλλά είναι λιγότερο πιθανό ότι θα εργαστείτε για να τα αλλάξετε.  

Συνεισφορές κώδικα

  • Θέματα GitHub Αν θέλετε να συνεισφέρετε αλλά δεν έχετε ένα έργο, δείτε τη λίστα τωνΘέματα GitHub, πολλά από τα οποία είναι έργα που μπορείτε να αναλάβετε. Αν θέλετε να εργαστείτε πάνω σε ένα ζήτημα, παρακαλούμε να το αναθέσετε στον εαυτό σας για να υποδείξει σε άλλους ότι εργάζεστε πάνω σε αυτό. Το θέμα GitHub είναι το καλύτερο μέρος για να συζητήσουμε οποιεσδήποτε ερωτήσεις για το πώς να προχωρήσουμε με την εργασία σε αυτό το θέμα.

  • Εάν η αλλαγή που θα θέλατε να κάνετε είναι μια από τις παρακάτω κοινές περιπτώσεις, παρακαλούμε δημιουργήστε έναΘέμα GitHubυποδεικνύοντας την αλλαγή που σκοπεύετε να κάνετε. Στη συνέχεια, μόλις ολοκληρωθεί η αλλαγή, κάντε μια αίτηση έλξης για να ζητήσετε τη συγχώνευση. Οι κοινές αλλαγές περιλαμβάνουν:

    • Θέλεις να γράψεις μια άλλη υποκατηγορία τουEDDGridή EDDTable για να χειριστεί έναν άλλο τύπο πηγής δεδομένων. Εάν ναι, σας συνιστούμε να βρείτε την πλησιέστερη υπάρχουσα υποκατηγορία και να χρησιμοποιήσετε αυτόν τον κωδικό ως σημείο εκκίνησης.

    • Θέλετε να γράψετε μια άλλη μέθοδο saveAs_FileType_. Εάν ναι, σας συνιστούμε να βρείτε την πλησιέστερη υπάρχουσα μέθοδο αποθήκευσηςAs_FileType_ inEDDGridή EDDTable και χρησιμοποιήστε αυτόν τον κωδικό ως σημείο εκκίνησης.

Αυτές οι καταστάσεις έχουν το πλεονέκτημα ότι ο κώδικας που γράφετε είναι αυτοτελής. Δεν χρειάζεται να ξέρεις όλες τις λεπτομέρειες.ERDDAPΕίναι εσωτερικά. Και θα είναι εύκολο για εμάς να ενσωματώσουμε τον κωδικό σας σεERDDAP. Σημειώστε ότι αν υποβάλετε κώδικα, η άδεια θα χρειαστεί συμβατό με τοERDDAP™ άδεια (π.χ.,Απάτσι,BSD, ήΜΙΤ-Χ) . Θα καταγράψουμε τη συνεισφορά σας στοΠιστώσεις.

  • Εάν έχετε ένα χαρακτηριστικό που δεν καλύπτεται παραπάνω που θα θέλατε να προσθέσετεERDDAP, συνιστάται να δημιουργήσετε πρώτα ένα νήμα συζήτησης στοΣυζήτηση GitHub. Για σημαντικά χαρακτηριστικά/αλλαγές, το Τεχνικό Συμβούλιο θα τα συζητήσει και θα αποφασίσει εάν θα εγκρίνει την προσθήκη του στοERDDAP™.

Κρίνοντας τις Συνεισφορές του Κώδικα σας

Εάν θέλετε να υποβάλετε κωδικό ή άλλες αλλαγές που πρέπει να συμπεριληφθούν στοERDDAPΑυτό είναι υπέροχο. Η συνεισφορά σας πρέπει να πληροί ορισμένα κριτήρια για να γίνει αποδεκτή. Εάν ακολουθήσετε τις παρακάτω κατευθυντήριες γραμμές, αυξάνετε σημαντικά τις πιθανότητες αποδοχής της συνεισφοράς σας.  

  • ΗERDDAP™Διαχείριση του έργου από NATD (NOAAΔιορισμένος τεχνικός διευθυντής) με εισαγωγή από τεχνικό συμβούλιο. Από το 2007 (η αρχή τηςERDDAP) μέχρι το 2022, ήταν ο Μπομπ Σάιμονς. (επίσης ο Ιδρυτής-Επικεφαλής) . Ξεκινώντας τον Ιανουάριο του 2023, αυτός είναι ο Κρις Τζον. Βασικά, η NATD είναι υπεύθυνη γιαERDDAP, έτσι έχει την τελική λέξη για τις αποφάσεις σχετικά μεERDDAP™κώδικα, ιδίως σχετικά με το σχεδιασμό και το αν μια δεδομένη αίτηση έλξης θα γίνει αποδεκτή ή όχι. Πρέπει να γίνει έτσι εν μέρει για λόγους αποδοτικότητας. (Λειτουργεί τέλεια για Linus Torvalds και Linux) και εν μέρει για λόγους ασφαλείας: Κάποιος πρέπει να πει στους ανθρώπους της ασφάλειας ΤΠ ότι αναλαμβάνει την ευθύνη για την ασφάλεια και την ακεραιότητα του κώδικα.  

  • Το NATD δεν εγγυάται ότι θα δεχτεί τον κωδικό σας. Αν ένα έργο δεν λειτουργήσει τόσο καλά όπως ελπίζαμε και αν δεν μπορεί να διασωθεί, το NATD δεν θα συμπεριλάβει το έργο στοERDDAP™κατανομή. Σε παρακαλώ μην αισθάνεσαι άσχημα. Μερικές φορές τα έργα δεν πάνε τόσο καλά όσο ήλπιζα. Συμβαίνει σε όλους τους προγραμματιστές λογισμικού. Αν ακολουθήσετε τις παρακάτω οδηγίες, αυξάνετε σημαντικά τις πιθανότητες επιτυχίας σας.  

  • Είναι καλύτερα αν οι αλλαγές είναι γενικού ενδιαφέροντος και χρησιμότητας. Εάν ο κώδικας είναι συγκεκριμένος για την οργάνωσή σας, είναι πιθανώς καλύτερο να διατηρήσει ένα ξεχωριστό κλάδο τηςERDDAP™για τη χρήση σας. Το αξίωμα το κάνει αυτό. Ευτυχώς, το Git το κάνει εύκολο. Το NATD θέλει να διατηρήσει ένα σταθερό όραμα γιαERDDAP, δεν επιτρέπουν να γίνει ένα έργο νεροχύτη κουζίνα όπου ο καθένας προσθέτει ένα προσαρμοσμένο χαρακτηριστικό για το έργο τους.  

  • Ακολουθήστε τοJavaΣυμβάσεις κώδικα. Γενικά, ο κωδικός σας πρέπει να είναι καλής ποιότητας και να ακολουθεί το αρχικόJavaΣυμβάσεις κώδικα: put . class αρχεία στην κατάλληλη θέση στη δομή καταλόγου, δίνουν . class αρχεία ένα κατάλληλο όνομα, περιλαμβάνουν σωστήJavaΣχόλια Doc, περιλαμβάνουν //στοιχεία στην αρχή κάθε παραγράφου του κώδικα, περίπτωση με 4 κενά (χωρίς καρτέλα) , αποφύγετε τις γραμμές > 80 χαρακτήρες, κ.λπ. Οι συμβάσεις αλλάζουν και ο πηγαίος κώδικας δεν είναι πάντα πλήρως ενημερωμένος. Όταν υπάρχει αμφιβολία, ταιριάζει με τον κώδικα με τις συμβάσεις και δεν υπάρχει κώδικας.

  • Χρήση περιγραφικών κατηγοριών, μεθόδων και μεταβλητών ονομάτων. Αυτό κάνει τον κώδικα πιο εύκολο για τους άλλους να διαβάσουν.  

  • Αποφύγετε τον φανταχτερό κώδικα. Μακροπρόθεσμα, εσείς ή άλλοι άνθρωποι θα πρέπει να υπολογίσετε τον κώδικα για να τον διατηρήσετε. Γι 'αυτό παρακαλώ χρησιμοποιήστε απλές μεθόδους κωδικοποίησης που είναι έτσι ευκολότερη για τους άλλους (συμπεριλαμβανομένου και εσένα στο μέλλον) για να καταλάβω. Προφανώς, αν υπάρχει ένα πραγματικό πλεονέκτημα στη χρήση κάποια φανταχτερήJavaχαρακτηριστικό προγραμματισμού, να το χρησιμοποιήσετε, αλλά να τεκμηριώσετε εκτενώς τι κάνατε, γιατί, και πώς λειτουργεί.  

  • Συνεργαστείτε με το Τεχνικό Συμβούλιο πριν ξεκινήσετε. Αν ελπίζεις να τραβήξεις τις αλλαγές του κώδικα σουERDDAP™, Το Τεχνικό Συμβούλιο θα θέλει σίγουρα να μιλήσει για το τι πρόκειται να κάνετε και πώς πρόκειται να το κάνετε πριν κάνετε οποιεσδήποτε αλλαγές στον κώδικα. Με αυτόν τον τρόπο, μπορούμε να αποφύγουμε τις αλλαγές που η NATD, στο τέλος, δεν δέχεται. Όταν κάνετε τη δουλειά, το NATD και το Τεχνικό Συμβούλιο είναι πρόθυμοι να απαντήσουν ερωτήσεις για να σας βοηθήσει να καταλάβω τον υπάρχοντα κώδικα και (γενικά) πώς να αντιμετωπίσει το έργο σας.  

  • Εργασία ανεξάρτητα (Όσο το δυνατόν περισσότερο) Αφού ξεκινήσεις. Σε αντίθεση με τα παραπάνω "Εργαστείτε με το Τεχνικό Συμβούλιο", αφού ξεκινήσετε το έργο, η NATD σας ενθαρρύνει να εργαστείτε όσο το δυνατόν πιο ανεξάρτητα. Αν η NATD πρέπει να σας πει σχεδόν τα πάντα και να απαντήσει σε πολλές ερωτήσεις (Ειδικά αυτά που θα μπορούσατε να έχετε απαντήσει διαβάζοντας την τεκμηρίωση ή τον κώδικα) , τότε οι προσπάθειές σας δεν είναι μια εξοικονόμηση χρόνου για το NATD και s/he θα μπορούσε επίσης να κάνει τη δουλειά τους. Είναι τοΜυθικός Άνθρωπος ΜήναςΠρόβλημα. Φυσικά, πρέπει να επικοινωνούμε. Θα ήταν υπέροχο να βλέπετε περιοδικά το έργο σας σε εξέλιξη για να βεβαιωθείτε ότι το έργο είναι σε καλό δρόμο. Αλλά όσο περισσότερο μπορείς να δουλέψεις ανεξάρτητα (μετά τη σύμφωνη γνώμη του τεχνικού συμβουλίου σχετικά με το έργο και τη γενική προσέγγιση) Το καλύτερο.  

  • Αποφύγετε τα έντομα. Εάν ένα σφάλμα δεν πιαστεί πριν από την απελευθέρωση, προκαλεί προβλήματα στους χρήστες (στην καλύτερη περίπτωση) , επιστρέφει λάθος πληροφορίες (Στη χειρότερη περίπτωση) , είναι ένα blot γιαERDDAPΗ φήμη του, και θα επιμείνει στο ξεπερασμένοERDDAP™εγκαταστάσεις για χρόνια. Δούλεψε πολύ σκληρά για να αποφύγεις τα έντομα. Μέρος αυτού είναι να γράφεις καθαρό κώδικα. (Έτσι είναι πιο εύκολο να δείτε τα προβλήματα) . Μέρος αυτού είναι οι δοκιμές μονάδων γραφής. Μέρος αυτού είναι μια συνεχής στάση αποφυγής σφαλμάτων όταν γράφετε κώδικα. Μην κάνεις το NATD να μετανιώσει προσθέτοντας τον κωδικό σουERDDAP™.  

  • Γράψτε μια δοκιμή μονάδας ή δοκιμές. Για νέο κωδικό, θα πρέπει να γράψετε τις δοκιμές Junit σε ένα αρχείο δοκιμής. Παρακαλώ γράψτε τουλάχιστον μία μεμονωμένη μέθοδο δοκιμών που ελέγχει εξονυχιστικά τον κωδικό που γράφετε και προσθέστε τον στο αρχείο δοκιμών JUNIT της τάξης, έτσι ώστε να εκτελείται αυτόματα. Μονάδα (και σχετικά) δοκιμές είναι ένας από τους καλύτερους τρόπους για να πιάσει σφάλματα, αρχικά, και μακροπρόθεσμα (καθώς άλλα πράγματα αλλάζουνERDDAP™) . Όπως είπε ο Μπομπ, "Τα τεστ με αφήνουν να κοιμάμαι τη νύχτα."  

  • Κάντε εύκολο για το NATD να καταλάβει και να αποδεχθεί τις αλλαγές στο αίτημα έλξης σας. Μέρος αυτού είναι η εγγραφή μιας μεθόδου δοκιμής μονάδας (α) . Μέρος αυτού είναι ο περιορισμός των αλλαγών σας σε ένα τμήμα του κώδικα (ή μία κλάση) Εάν είναι δυνατόν. Το NATD δεν θα δεχτεί καμία αίτηση έλξης με εκατοντάδες αλλαγές σε όλο τον κώδικα. Η NATD λέει στους ανθρώπους της ασφάλειας πληροφορικής ότι αναλαμβάνει την ευθύνη για την ασφάλεια και την ακεραιότητα του κώδικα. Εάν υπάρχουν πάρα πολλές αλλαγές ή είναι πάρα πολύ δύσκολο να καταλάβω, τότε είναι πάρα πολύ δύσκολο να επαληθευτεί οι αλλαγές είναι σωστές και δεν εισάγει σφάλματα ή θέματα ασφάλειας.  

  • Κράτα το απλό. Ένα καλό γενικό θέμα για τον κώδικα σας είναι: Κρατήστε το απλό. Απλός κώδικας είναι εύκολος για τους άλλους (συμπεριλαμβανομένου και εσένα στο μέλλον) να διαβάσει και να διατηρήσει. Είναι εύκολο για το NATD να καταλάβει και έτσι να δεχτεί.  

  • Υπέθεσε μακροχρόνια ευθύνη για τον κώδικά σου. Μακροπρόθεσμα, είναι καλύτερα να αναλάβετε τη συνεχιζόμενη ευθύνη για τη διατήρηση του κώδικα σας και να απαντήσετε σε ερωτήσεις σχετικά με αυτό. (Π.χ.ERDDAP™Ομάδα Google) . Όπως σημειώνουν ορισμένοι συγγραφείς, ο κώδικας αποτελεί υποχρέωση καθώς και περιουσιακό στοιχείο. Αν ένα έντομο ανακαλυφθεί στο μέλλον, είναι καλύτερα να το διορθώσεις γιατί κανείς δεν ξέρει τον κώδικα σου καλύτερα από σένα. (Επίσης, έτσι ώστε να υπάρχει κίνητρο για την αποφυγή σφαλμάτων στην πρώτη θέση) . Η NATD δεν ζητά μια σταθερή δέσμευση για την παροχή συνεχούς συντήρησης. Το NATD λέει ότι η συντήρηση θα εκτιμηθεί πολύ.