[[TranslatedPages(revision=30)]] = Richtlijnen voor ontwikkelen = == Hoe uw code er uit zou moeten zien == * zorg er voor dat de code compatibel is met Java 8 * zorg er voor dat er geen witruimte achter staat * gebruik niet meerdere lege regels achter elkaar * JOSM gebruikt 4 tekens voor inspringen en geen tabstops (Als u Notepad++ gebruikt kunt u de standaard inspringing wijzigen in de "Voorkeuren" -> "Tabs" -> selecteer "Omzetten in spaties" (dit is permanent) of met de knop "Instellingen insprong wijzigen" in de werkbalk door het vinkje te verwijderen bij "Tabs gebruiken" (dit is een tijdelijke instelling).) * Documenteer uw code '''uitvoerig'''. Veel mensen zullen u daar dankbaar voor zijn :) * voeg gekrulde haken toe voor elke {{{if}}}, tenzij die wordt gevolgd door een {{{return}}} (of misschien een {{{throw}}}) * controleer uw wijzigingen vóór patch/commit: `ant checkstyle` en controleer `checkstyle-josm.xml`; indien u vindt dat het uitvoeren van checkstyle te lang duurt voor alle bestanden, voer het dan alleen uit op de gewijzigde bestanden: {{{ svn diff --summarize | awk '{ print $2 }' | xargs java -jar tools/checkstyle/checkstyle-6.14.1-all.jar -c tools/checkstyle/josm_checks.xml # or git diff --name-only | xargs java -jar tools/checkstyle/checkstyle-6.14.1-all.jar -c tools/checkstyle/josm_checks.xml }}} == Hoe uw javadoc er uit zou moeten zien == * De [https://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#styleguide Oracle Javadoc style guide] wordt gebruikt als gids voor de basis * {{{@since}}} wordt gebruikt voor publieke klassen en methoden (zichtbaar voor de ontwikkelaars van invoegtoepassingen) met de revisie van JOSM waarin het element werd geïntroduceerd. Voorbeeld: {{{@since 5408}}} * {{{@since}}} wordt bijgewerkt als een handtekening van een publieke methode wijzigt of indien een klasse een andere naam krijgt * {{{@since}}} kan worden weggelaten voor publieke methoden en velden die tegelijkertijd met de klasse worden geïntroduceerd, vooropgesteld dat zij niet zijn gewijzigd en de klasse juist is gedocumenteerd. * {{{@throws}}} heeft de voorkeur boven {{{@exception}}} * controleer uw wijzigingen vóór patch/commit door het genereren van javadoc: `ant javadoc`, blader door de uitvoerberichten; indien u vindt dat het uitvoeren van javadoc te lang duurt voor alle bestanden, voer het dan alleen uit op de gewijzigde bestanden: {{{ svn diff --summarize | awk '{ print $2 }' | xargs javadoc -d javadoc # or git diff --name-only | xargs javadoc -d javadoc }}} === Eclipse configureren === [[Image(wiki:DevelopersGuide/StyleGuide:styleguide_compiler_16.png,700px)]] [[Image(wiki:DevelopersGuide/StyleGuide:ss1.png,700px)]] [[Image(wiki:DevelopersGuide/StyleGuide:ss2.png,700px)]] [[Image(wiki:DevelopersGuide/StyleGuide:ss3.png,700px)]] == Internationalisatie == * zorg er voor dat {{{tr(...)}}} gebruikt voor alle gelokaliseerde tekenreeksen {{{ import import static org.openstreetmap.josm.tools.I18n.tr; // gebruik tr(...) voor berichten van uitzonderingen // throw new Exception(tr("foutenbericht altijd in tr()")); // gebruik tr(...) voor labels, titel, teksten van helptips en soortgelijke // new JLabel(tr("Label altijd in tr()")); // etc. }}} * assembleer gelokaliseerde berichten NOOIT met {{{+}}}. Gebruik in plaats daarvan tijdelijke plaatsaanduidingen voor opmaak. '''NIET''' {{{new JLabel(tr("Mijn label " + labelId));}}} '''MAAR''' {{{new JLabel(tr("Mijn label {0}",labelId));}}} Enige uitzondering: {{{+}}} kan worden gebruikt om lange regels van niet-variabele teksten af te breken. * Bij het gebruiken van een apostrof, zijn de volgende regels van toepassing: Voor alle {{{tr}}} is de apostrof speciaal. (Zoals de backslash in C)[[BR]] Hij moet worden geëscaped door een andere apostrof: {{{new JButton(tr("Don''t press me more than {0} times!", n))}}} ---- Terug naar [wiki:/Nl:Help/DevelopersGuide Developers Guide]