Changes between Initial Version and Version 1 of Fr:DevelopersGuide/StyleGuide


Ignore:
Timestamp:
2022-08-07T17:55:52+02:00 (2 years ago)
Author:
leni
Comment:

created fr: translation

Legend:

Unmodified
Added
Removed
Modified
  • Fr:DevelopersGuide/StyleGuide

    v1 v1  
     1[[TranslatedPages(revision=36)]]
     2= Lignes directrices pour le développement =
     3
     4[[PageOutline(2-2,Table des matières,inline)]]
     5
     6
     7== À quoi devrait ressembler votre code ==
     8
     9 * Assurez-vous que le code est compatible avec Java 8.
     10 * '''Documentez''' votre code en utilisant les commentaires en ligne et javadoc. De nombreuses personnes vous en remercieront :) :)
     11 * Essayez d’éviter les champs publics.
     12 * JOSM a beaucoup de méthodes d’aide dans les classes `Utils`, `GuiUtils`, `Geometry` ... utilisez-les si vous en avez besoin.
     13 * Vérifiez les paramètres. Vous pouvez utiliser `Objects.requireNonNull`.
     14 * N’écrivez pas pour la performance – écrivez pour la lisibilité. Utilisez `Stream`s, `Function`s et d'autres fonctionnalités de Java 8 si elles rendent le code plus lisible.
     15
     16=== Threading / Verrouillage ===
     17
     18 * JOSM utilise différents mécanismes de verrouillage, en fonction de l'objet.
     19 * Les ensembles de données sont protégés par un verrou RW. Certaines méthodes ne sont pas verrouillées automatiquement pour des raisons de performance. Assurez-vous de développer les verrous nécessaires à vos modifications.
     20 * Les composants de l'interface graphique ne doivent être modifiés que dans le fil (''**thread**'') EDT.
     21 * Préférez utiliser `SwingUtils.invokeLater` si vous avez besoin de lancer quelque chose sur le thread de l'interface utilisateur.
     22 * De nombreux **''listeners**'' s'exécutent déjà dans le **''thread**'' EDT (changements de couches) ou disposent d'un gestionnaire central qui vous permet d'enregistrer des **''listeners**'' qui s'exécutent dans EDT (changements de jeux de données, changements de sélection).
     23
     24
     25== Comment devrait se présenter votre mise en forme ==
     26
     27 * Assurez-vous qu'il n'y a pas d'espace blanc à la fin.
     28 * N'utilisez pas plusieurs lignes vides consécutives.
     29 * JOSM utilise une indentation de 4 caractères et aucun arrêt de tabulation. Si vous utilisez Notepad++, vous pouvez changer l'indentation par défaut dans les “Préférences” -> “Langue” -> “Paramètres de tabulation” -> cocher “Remplacer par des espaces” (ceci est permanent) ou avec le bouton “changer les paramètres d'indentation” dans la barre d'outils (ceci est un paramètre temporaire et nécessite le greffon "Customize Toolbar").
     30 * ajouter des crochets pour chaque {{{if}}}, sauf s'il est suivi de {{{return}}} (ou peut-être {{{throw}}}).
     31 * Vous devriez utiliser '''checkstyle''' avant le patch/commit : `ant checkstyle` et vérifiez `checkstyle-josm.xml`; si vous trouvez que l'exécution de checkstyle est lente pour tous les fichiers, exécutez-la uniquement pour les fichiers modifiés :
     32{{{
     33  #!bash
     34    # vérifiez que le répertoire build2 existe, si ce n'est pas le cas lancez 'ant checkstyle-compile' avant
     35
     36    svn diff --summarize | awk '{ print $2 }' | grep "^[a-z]" | xargs \
     37      java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \
     38        com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml
     39    # ou
     40    git diff --name-only | xargs \
     41      java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \
     42        com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml
     43}}}
     44
     45
     46== À quoi devrait ressembler votre javadoc ==
     47 * Le [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#styleguide guide de style de Javadoc d'Oracle ] est utilisé comme base pour ce guide.
     48 * {{{@since}}} est utilisé pour les classes et méthodes publiques (visibles par les développeurs de greffons) avec la révision JOSM qui a introduit l'élément. Par exemple : {{{@since 5408}}}.
     49   * {{{@since}}} est mis à jour / ajouté lorsqu'une signature de méthode publique change ou si une classe est renommée.
     50   * {{{@since}}} peut être omis pour les méthodes et champs publics introduits en même temps que la classe, à condition qu'ils n'aient pas été modifiés et que la classe soit correctement documentée.
     51   * Il peut y avoir plusieurs attributs {{{@since}}} - par exemple pour ajouter des interfaces à une classe. Le motif de ces attributs doit être ajouté, par exemple : {{{@since 12345 @FunctionalIterface was added}}}
     52   * Si vous soumettez un patch et que vous ne connaissez pas la révision, ajoutez de toute façon {{{@since xxx}}}. Elle peut ensuite être remplacée lors de la fusion de votre patch.
     53 * {{{@throws}}} est préféré à {{{@exception}}}
     54 * vérifiez vos changements avant le patch/commit en générant javadoc : `ant javadoc`, parcourez les messages de sortie ; si vous trouvez que l'exécution de javadoc est lente pour tous les fichiers, exécutez-le uniquement pour les fichiers modifiés :
     55
     56{{{
     57    svn diff --summarize | awk '{ print $2 }' | xargs javadoc -d javadoc
     58    # ou
     59    git diff --name-only | xargs javadoc -d javadoc
     60}}}
     61
     62=== Configuration d'Eclipse ===
     63[[Image(wiki:DevelopersGuide/StyleGuide:styleguide_compiler_16.png,700px)]]
     64
     65[[Image(wiki:DevelopersGuide/StyleGuide:ss1.png,700px)]]
     66
     67[[Image(wiki:DevelopersGuide/StyleGuide:ss2.png,700px)]]
     68
     69[[Image(wiki:DevelopersGuide/StyleGuide:ss3.png,700px)]]
     70
     71
     72== Internationalisation ==
     73
     74 * veillez à utiliser {{{tr(...)}}}  pour toutes les chaînes localisées
     75   {{{
     76   #!java
     77   import import static org.openstreetmap.josm.tools.I18n.tr;
     78
     79   // utilisez tr(...) pour les messages d'exception
     80   //
     81   throw new Exception(tr("error message always in tr()"));
     82
     83   // utilisez tr(...) pour les étiquettes, les titres, les infobulles, etc.
     84   //
     85   new JLabel(tr("Label always in tr()"));
     86
     87   // etc.
     88   }}}
     89
     90 * n'assemblez jamais les messages localisés avec {{{+}}}. Utilisez plutôt des caractères de remplacement de format à la place.
     91
     92   '''NE FAITES PAS'''
     93   {{{new JLabel(tr("My Label " + labelId));}}}
     94
     95   '''FAITES'''
     96   {{{new JLabel(tr("My Label {0}",labelId));}}}
     97
     98   Seule exception : {{{+}}} peut être utilisé pour interrompre de longues lignes de textes non variables.
     99   Les caractères de remplacement sont obligatoires dans les traductions simples.
     100
     101 * Lorsqu'une apostrophe est utilisée dans la chaîne de caractères source, elle doit être échappée par une autre apostrophe (comme la barre oblique inverse en C) :  \\
     102   {{{#!java
     103   new JButton(tr("Don''t press me!"))
     104   }}}
     105
     106 * Un contexte de traduction peut être défini avec {{{trc(...)}}}. Des indications supplémentaires pour les traducteurs sont données par les commentaires java de la fonction :
     107   {{{#!java
     108   /* I18n: numéro de maison (house number), rue comme paramètre ; placer le numéro en premier pour la lisibilité. */
     109   msg = tr("House number {0} at {1}", s, t);
     110   }}}
     111
     112 * Utilisez {{{trn(...)}}} pour laisser les traducteurs choisir le pluriel spécifique à la langue :
     113   {{{#!java
     114   msg = trn("Object deleted", "Objects deleted", del.size();
     115   
     116   // ou avec des caractères de remplacement :
     117   //
     118   new JButton(trn(/* I18n: le temps (times) est nécessaire, quelques noms (someName) comme paramètres */
     119                       "Press {1} {0} times!", n, n, someName))
     120
     121   // La chaîne de caractères source au singulier en anglais doit être indiquée
     122   // à des fins d'identification, même si elle est logiquement invalide et ne
     123   // se produira pas. Pour des raisons de cohérence, le caractère générique du
     124   // numéro doit y être inséré.
     125   //
     126   msg = trn("Combine {0} way", "Combine {0} ways", n, n);
     127   }}}
     128
     129 Dans les segments pluriels, aucun caractère de remplacement n'est obligatoire pour les traducteurs.
     130
     131
     132== Voir également ==
     133 * La version originale de cette page en [wiki:/DevelopersGuide/StyleGuide anglais]
     134
     135----
     136Retour au [wikitr:/DevelopersGuide Guide du développeur]