Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Autoformátování kódu

Autoformátování kódu

V Energomonitoru jsme ukončili hádky o formátování kódu a kde to jde, formátujeme ho automaticky. Jak jsme k tomu dospěli, co za konkrétní nástroje pro které jazyky používáme, a jaké jsou naše zkušenosti s tímto přístupem?

Předneseno na Devel.cz 2018.

Video: https://slideslive.com/38908630/autoformatovani-kodu

David Majda

June 16, 2018
Tweet

More Decks by David Majda

Other Decks in Programming

Transcript

  1. Autoformátování
    kódu
    Devel.cz 2018 · Praha · 16.6.2018
    David Majda
    @dmajda

    View full-size slide

  2. Kdo někdy vedl diskuzi o
    formátování kódu?

    View full-size slide

  3. Autoformátování
    podobným diskuzím
    předchází

    View full-size slide

  4. Python
    Go
    JavaScript

    View full-size slide

  5. Python
    Go
    JavaScript
    gofmt

    View full-size slide

  6. Python
    Go
    JavaScript
    gofmt
    Prettier

    View full-size slide

  7. Python
    Go
    JavaScript
    YAPF
    gofmt
    Prettier

    View full-size slide

  8. gofmt
    ● standard v Go komunitě
    ● žádné nastavení (!)
    ● jednoduchý algoritmus
    ○ hlavně odsazení,
    zarovnávání
    ○ neřeší zalamování řádků
    ● nemám větší zkušenost

    View full-size slide

  9. Prettier
    ● umí více jazyků
    ● několik málo nastavení
    ● přímočarý algoritmus
    ○ ale hodně speciálních
    případů
    ● formátuje dobře

    View full-size slide

  10. YAPF
    ● spousta nastavení
    ● složitější algoritmus
    ○ rozhodovací strom
    ○ váhy
    ○ heuristiky
    ● občas formátuje „divně“

    View full-size slide

  11. f(a, b, c, d)
    f(a, b, c,
    d)
    f(a=1, b=2, c=3, d=4)
    f(a=1,
    b=2,
    c=3,
    d=4)

    View full-size slide

  12. a = [1, 2]
    a = [1, 2]
    a = [1, 2,]
    a = [
    1,
    2,
    ]

    View full-size slide

  13. Jak použít?

    View full-size slide

  14. make format
    make format-check
    npm run format
    npm run format-check

    View full-size slide

  15. Naše zkušenosti

    View full-size slide

  16. Nejtěžší je vzdát se
    kontroly

    View full-size slide

  17. Python
    Go
    JavaScript
    YAPF
    gofmt
    Prettier
    C/C++
    Rust

    ClangFormat
    rustfmt

    View full-size slide

  18. Autoformátujte!
    David Majda
    @dmajda

    View full-size slide