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 Slide

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

    View Slide

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

    View Slide

  4. Python
    Go
    JavaScript

    View Slide

  5. Python
    Go
    JavaScript
    gofmt

    View Slide

  6. Python
    Go
    JavaScript
    gofmt
    Prettier

    View Slide

  7. Python
    Go
    JavaScript
    YAPF
    gofmt
    Prettier

    View 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 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 Slide

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

    View 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 Slide

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

    View Slide

  13. Jak použít?

    View Slide

  14. View Slide

  15. make format
    make format-check
    npm run format
    npm run format-check

    View Slide

  16. View Slide

  17. Naše zkušenosti

    View Slide

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

    View Slide

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

    ClangFormat
    rustfmt

    View Slide

  20. Autoformátujte!
    David Majda
    @dmajda

    View Slide