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


Ignore:
Timestamp:
2025-03-08T21:43:42+01:00 (10 months ago)
Author:
paleid
Comment:

Eo added

Legend:

Unmodified
Added
Removed
Modified
  • Eo:DevelopersGuide/StyleGuide

    v1 v1  
     1[[TranslatedPages(revision=38)]]
     2= Disvolvaj Gvidlinioj =
     3
     4[[PageOutline(2-2,Enhavotabelo,inline)]]
     5
     6== Kiel via kodo devus aspekti ==
     7
     8 * certigu, ke la kodo estas kongrua kun Java 11
     9 * **Dokumentu** vian kodon per enliniaj komentoj kaj javadoc. Multaj homoj dankos vin :)
     10 * Provu eviti publikajn kampojn
     11 * JOSM havas multajn helpajn metodojn en la klasoj `Utils`, `GuiUtils`, `Geometry` ... Uzu ilin se vi bezonas
     12 * Kontrolu parametrojn. Vi povas uzi `Objects.requireNonNull`.
     13 * Ne skribu por efikeco - skribu por legebleco. Uzu `Stream`-ojn, `Function`-ojn kaj aliajn Java 8+ trajtojn se ili igas la kodon pli legebla.
     14
     15=== Fadenado / Ŝlosado ===
     16
     17 * JOSM uzas diversajn ŝlosmekanismojn, depende de la objekto.
     18 * La datumaj aroj estas protektitaj per RW-ŝloso. Kelkaj metodoj ne aŭtomate ŝlosas pro efikecaj kialoj. Certigu akiri la necesajn ŝlosojn por viaj ŝanĝoj.
     19 * GUI-komponentoj devas esti modifitaj nur en la EDT-fadeno
     20 * Preferu uzi `SwingUtils.invokeLater` se vi bezonas ruli ion en la UI-fadeno
     21 * Multaj aŭskultantoj jam funkcias en la EDT-fadeno (tavolaj ŝanĝoj) aŭ havas centran administranton, kiu permesas al vi registri aŭskultantojn, kiuj funkcias en EDT (datumaj ŝanĝoj, elektoŝanĝoj).
     22
     23== Kiel via formatado devus aspekti ==
     24
     25 * certigu, ke ne estas spuroj de blanka spaco
     26 * ne uzu multoblajn sinsekvajn malplenajn liniojn
     27 * JOSM uzas 4-signan deŝovon kaj neniu tabo. Se vi uzas Notepad++, vi povas ŝanĝi la defaŭltan deŝovon en "Preferoj" -> "Lingvo" -> "Tabaj Agordoj" -> marku "Anstataŭigi per spacoj" (ĉi tio estas konstanta) aŭ per la butono "ŝanĝi deŝovajn agordojn" en la ilobreto (ĉi tio estas provizora agordo kaj postulas la kromprogramon "Adapti Ilobreton").
     28 * aldonu krispajn krampojn por ĉiu `if`, krom se ĝi estas sekvata de `return` (aŭ eble `throw`)
     29 * Vi devus uzi **checkstyle** antaŭ flikaĵo/komito: `ant checkstyle` kaj kontrolu `checkstyle-josm.xml`; se vi trovas, ke rulado de checkstyle estas malrapida por ĉiuj dosieroj, rulu nur por ŝanĝitaj dosieroj:
     30{{{
     31  #!bash
     32    # certigu, ke build2-dosierujo ekzistas, se ĝi ne ekzistas, rulu 'ant checkstyle-compile' antaŭe
     33
     34    svn diff --summarize | awk '{ print $2 }' | grep "^[a-z]" | xargs \
     35      java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \
     36        com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml
     37    # aŭ
     38    git diff --name-only | xargs \
     39      java -classpath "build2:tools/checkstyle/checkstyle-all.jar" \
     40        com.puppycrawl.tools.checkstyle.Main -c tools/checkstyle/josm_checks.xml
     41}}}
     42
     43== Kiel via javadoc devus aspekti ==
     44 * La [https://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#styleguide Oracle Javadoc-stilgvidilo] estas uzata kiel la baza gvidilo
     45 * `@since` estas uzata por publikaj klasoj kaj metodoj (videblaj al kromprogramaj programistoj) kun la JOSM-revizio, kiu enkondukis la elementon. Ekzemplo: `@since 5408`
     46   * `@since` estas ĝisdatigita/aldonita kiam publika metodoŝablono ŝanĝiĝas aŭ se klaso estas renomita.
     47   * `@since` povas esti preterlasita por publikaj metodoj kaj kampoj enkondukitaj samtempe kun la klaso, kondiĉe ke ili ne ŝanĝiĝis kaj la klaso estas ĝuste dokumentita.
     48   * Povas esti multoblaj `@since`-etikedo, ekz. por aldoni interfacojn al klaso. La kialo por tiuj etikedoj devas esti aldonita. Ekzemplo: `@since 12345 @FunctionalIterface estis aldonita`
     49   * Se vi sendas flikaĵon kaj ne konas la revizion, aldonu `@since xxx` ĉiuokaze. Ĝi povas esti anstataŭigita kiam via flikaĵo estas kunfandita.
     50 * `@throws` estas preferata ol `@exception`
     51 * kontrolu viajn ŝanĝojn antaŭ flikaĵo/komito per generado de javadoc: `ant javadoc`, foliumu elirmesaĝojn; se vi trovas, ke rulado de javadoc estas malrapida por ĉiuj dosieroj, rulu nur por ŝanĝitaj dosieroj:
     52
     53{{{
     54    svn diff --summarize | awk '{ print $2 }' | xargs javadoc -d javadoc
     55    # aŭ
     56    git diff --name-only | xargs javadoc -d javadoc
     57}}}
     58
     59=== Agordado de Eclipse ===
     60[[Image(DevelopersGuide/StyleGuide:styleguide_compiler_16.png,700px)]]
     61
     62[[Image(DevelopersGuide/StyleGuide:ss1.png,700px)]]
     63
     64[[Image(DevelopersGuide/StyleGuide:ss2.png,700px)]]
     65
     66[[Image(DevelopersGuide/StyleGuide:ss3.png,700px)]]
     67
     68
     69== Internaciigo ==
     70
     71 * certigu, ke vi uzas `tr(...)` por ĉiuj lokalizitaj ĉenoj
     72   {{{
     73   #!java
     74   import import static org.openstreetmap.josm.tools.I18n.tr;
     75
     76   // uzu tr(...) por esceptmesaĝoj
     77   //
     78   throw new Exception(tr("erarmesaĝo ĉiam en tr()"));
     79
     80   // uzu tr(...) por etikedoj, titoloj, ilinformaj tekstoj kaj similaj
     81   //
     82   new JLabel(tr("Etikedo ĉiam en tr()"));
     83
     84   // ktp.
     85   }}}
     86
     87 * neniam kunmetu lokalizitajn mesaĝojn per `+`. Uzu formatajn anstataŭilojn anstataŭe.
     88
     89   **NE FARU**
     90   `new JLabel(tr("Mia Etikedo " + labelId));`
     91
     92   **FARU**
     93   `new JLabel(tr("Mia Etikedo {0}",labelId));`
     94
     95   Nur escepto: `+` povas esti uzata por rompi longajn liniojn de ne-variablaj tekstoj.
     96   La anstataŭiloj estas devigaj en simplaj tradukoj.
     97
     98 * Kiam vi uzas apostrofon en la fonta ĉeno, ĝi devas esti eskapita per alia apostrofo (kiel backslash en C):[[BR]]
     99   {{{#!java
     100   new JButton(tr("Ne premu min!"))
     101   }}}
     102
     103 * Traduka kunteksto povas esti agordita per `trc(...)`. Aldonaj indikoj al tradukantoj estas donitaj per java-komentoj ĉe la funkcio:
     104   {{{#!java
     105   /* I18n: domnumero, strato kiel parametro; metu numeron unue por videbleco */
     106   msg = tr("Domnumero {0} ĉe {1}", s, t);
     107   }}}
     108
     109 * Uzu `trn(...)` por permesi al tradukantoj elekti la lingvospecifan pluralon:
     110   {{{#!java
     111   msg = trn("Objekto forigita", "Objektoj forigitaj", del.size();
     112   
     113   // aŭ kun anstataŭiloj:
     114   //
     115   new JButton(trn(/* I18n: necesaj fojoj, iu nomo kiel parametro */
     116                       "Premu {1} {0} fojojn!", n, n, someName))
     117
     118   // La angla ununombra fonta ĉeno devas esti donita por identigo
     119   // eĉ kiam ĝi estas logike nevalida kaj ne okazos. Por konsistenco
     120   // la nombra anstataŭilo devas esti agordita en ĝi.
     121   //
     122   msg = trn("Kunigu {0} vojon", "Kunigu {0} vojojn", n, n);
     123   }}}
     124
     125 En pluralaj segmentoj neniu anstataŭilo estas deviga por tradukantoj.
     126
     127----
     128Reen al [wikitr:/DevelopersGuide Programista Gvidilo]