Άλλες γλώσσες:
- Ελληνικά
- English
- Esperanto
- français
- 日本語
- norsk bokmål
- Nederlands
Οδηγίες Ανάπτυξης
Table of content
- Πώς θα πρέπει να είναι ο κώδικάς σας
- Πώς θα πρέπει να είναι η μορφοποίηση του κώδικά σας
- Πώς πρέπει να φαίνεται το javadoc σας
- Διεθνοποίηση
Πώς θα πρέπει να είναι ο κώδικάς σας
- Βεβαιωθείτε ότι ο κώδικας είναι συμβατός με Java 11
- Τεκμηριώστε τον κώδικά σας χρησιμοποιώντας ενσωματωμένα σχόλια και javadoc. Πολλοί άνθρωποι θα σας ευγνωμονούν :)
- Προσπαθήστε να αποφύγετε τα δημόσια πεδία
- Το JOSM περιλαμβάνει πολλές βοηθητικές μεθόδους στις κλάσεις
Utils,GuiUtils,Geometry.... Χρησιμοποιήστε τις αν χρειάζεστε - Ελέγξτε τις παραμέτρους. Μπορείτε να χρησιμοποιήσετε το
Objects.requireNonNull. - Μην γράφετε για απόδοση - γράψτε για αναγνωσιμότητα. Χρησιμοποιήστε
Streams,Functions και άλλες λειτουργίες Java 8+ αν κάνουν τον κώδικα πιο ευανάγνωστο.
Threading / Κλείδωμα
- Το JOSM χρησιμοποιεί διάφορους μηχανισμούς κλειδώματος, ανάλογα με το αντικείμενο.
- Τα σύνολα δεδομένων προστατεύονται από κλείδωμα RW. Ορισμένες μέθοδοι δεν κλειδώνουν αυτόματα για λόγους απόδοσης. Βεβαιωθείτε ότι έχετε αποκτήσει τα κλειδώματα που απαιτούνται για τις αλλαγές σας.
- Τα στοιχεία GUI θα πρέπει να τροποποιούνται μόνο στο νήμα EDT.
- Προτιμήστε να χρησιμοποιείτε τη μέθοδο
SwingUtils.invokeLaterεάν χρειάζεται να εκτελέσετε οτιδήποτε στο νήμα UI. - Πολλοί ακροατές εκτελούνται ήδη στο νήμα EDT (αλλαγές επιπέδων) ή έχουν έναν κεντρικό διαχειριστή που σας επιτρέπει να καταχωρείτε ακροατές που εκτελούνται στο EDT (αλλαγές συνόλου δεδομένων, αλλαγές επιλογής).
Πώς θα πρέπει να είναι η μορφοποίηση του κώδικά σας
- βεβαιωθείτε ότι δεν υπάρχουν κενά διαστήματα στο τέλος των γραμμών
- μην χρησιμοποιείτε πολλαπλές συνεχόμενες κενές γραμμές
- το JOSM χρησιμοποιεί εσοχή 4 χαρακτήρων και καθόλου στηλοθέτες. Εάν χρησιμοποιείτε το Notepad++ μπορείτε να αλλάξετε την προεπιλεγμένη εσοχή στις "Προτιμήσεις" -> "Γλώσσα" -> "Ρυθμίσεις στηλοθέτη" -> επιλέξτε "Αντικατάσταση με κενά" (αυτό είναι μόνιμο) ή με το κουμπί "αλλαγή ρυθμίσεων εσοχής" στη εργαλειοθήκη (αυτή είναι μια προσωρινή ρύθμιση και απαιτεί το πρόσθετο "Προσαρμογή Εργαλειοθήκης").
- προσθέστε αγκύλες για κάθε
if, εκτός εάν ακολουθείται απόreturn(ή πιθανώςthrow) - Θα πρέπει να χρησιμοποιήσετε το checkstyle πριν από το patch/commit:
ant checkstyleκαι ελέγξτεcheckstyle-josm.xml; εάν διαπιστώσετε ότι η εκτέλεση του checkstyle είναι αργή για όλα τα αρχεία, εκτελέστε την μόνο για τα τροποποιημένα αρχεία:# make sure build2 dir exists, if it does not run 'ant checkstyle-compile' before svn diff --summarize | awk '{ print $2 }' | grep "^[a-z]" | xargs \ java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \ com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml # or git diff --name-only | xargs \ java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \ com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml
Πώς πρέπει να φαίνεται το javadoc σας
- Ο οδηγός στυλ Oracle Javadoc χρησιμοποιείται ως βασικός οδηγός
- Το
@sinceχρησιμοποιείται για δημόσιες κλάσεις και μεθόδους (ορατές στους προγραμματιστές πρόσθετων) με την έκδοση JOSM που εισήγαγε το στοιχείο. Παράδειγμα:@since 5408- Το
@sinceενημερώνεται / προστίθεται όταν αλλάζει η υπογραφή μιας δημόσιας μεθόδου ή εάν μετονομαστεί μια κλάση. - Το
@sinceμπορεί να παραλειφθεί για δημόσιες μεθόδους και πεδία που εισάγονται ταυτόχρονα με την κλάση, υπό την προϋπόθεση ότι δεν έχουν αλλάξει και η κλάση είναι σωστά τεκμηριωμένη. - Μπορεί να υπάρχουν πολλαπλές ετικέτες
@sincetags, e.g. fπ.χ. για την προσθήκη διεπαφών σε μια κλάση. Ο λόγος για αυτές τις ετικέτες πρέπει να προστεθεί Παράδειγμα:@since 12345 @FunctionalIterface προστέθηκε - Εάν υποβάλετε μια ενημέρωση κώδικα και δεν γνωρίζετε την έκδοση κώδικα, προσθέστε το
@since xxxέτσι κι αλλιώς. Μπορεί στη συνέχεια, να αντικατασταθεί κατά τη συγχώνευση της ενημέρωσης κώδικα.
- Το
- Το
@throwsπροτιμάται από το@exception - ελέγξτε τις αλλαγές σας πριν από την ενημέρωση κώδικα/επικύρωση δημιουργώντας javadoc:
ant javadoc, browse output messages; Αν διαπιστώσετε ότι η εκτέλεση του javadoc είναι αργή για όλα τα αρχεία, εκτελέστε το μόνο για τα τροποποιημένα αρχεία:
svn diff --summarize | awk '{ print $2 }' | xargs javadoc -d javadoc
# or
git diff --name-only | xargs javadoc -d javadoc
Ρύθμιση του Eclipse
Διεθνοποίηση
- Βεβαιωθείτε ότι χρησιμοποιείτε το
tr(...)για όλες τις μεταφραζόμενες συμβολοσειρέςimport import static org.openstreetmap.josm.tools.I18n.tr; // use tr(...) for exception messages // throw new Exception(tr("error message always in tr()")); // use tr(...) for labels, title, tooltip texts and the like // new JLabel(tr("Label always in tr()")); // etc.
- μην συναρμολογείτε μεταφρασμένα μηνύματα με
+. Χρησιμοποιήστε ειδικούς χαρακτήρες αντικατάστασης.
ΜΗΝ
new JLabel(tr("My Label " + labelId));
ΚΑΝΤΕ ΤΟ
new JLabel(tr("My Label {0}",labelId));
Μοναδική εξαίρεση: Το
+μπορεί να χρησιμοποιηθεί για να διακόψει μεγάλες γραμμές μη μεταβλητών κειμένων. Οι ειδικοί χαρακτήρες αντικατάστασης είναι υποχρεωτικοί σε απλές μεταφράσεις.
- Όταν χρησιμοποιείτε απόστροφο μέσα σε μεταφράσιμη συμβολοσειρά, πρέπει να διαφεύγει με μία δεύτερη απόστροφο (όπως το backslash στην C):
new JButton(tr("Don''t press me!"))
- Ένα περιβάλλον μετάφρασης μπορεί να οριστεί με
trc(...). Πρόσθετες συμβουλές για τους μεταφραστές δίνονται από σχόλια java στη συνάρτηση:/* I18n: house number, street as parameter; place number first for visibility */ msg = tr("House number {0} at {1}", s, t);
- Χρησιμοποιήστε
trn(...)για να επιτρέψετε στους μεταφραστές να επιλέξουν τον πληθυντικό για τη συγκεκριμένη γλώσσα:msg = trn("Object deleted", "Objects deleted", del.size(); // or with placeholders: // new JButton(trn(/* I18n: times needed, some name as parameter */ "Press {1} {0} times!", n, n, someName)) // The English singular source string must be given for identification // even when its logically invalid and won't occur. For consistency // the number placeholder should be set in it. // msg = trn("Combine {0} way", "Combine {0} ways", n, n);
Στα τμήματα πληθυντικού δεν είναι υποχρεωτικοί οι ειδικοί χαρακτήρες αντικατάστασης για τους μεταφραστές.
Πίσω στο Οδηγός για Προγραμματιστές (en)
Last modified
5 months ago
Last modified on 2025-07-14T22:01:04+02:00
Note:
See TracWiki
for help on using the wiki.






