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

Ebe96461709771a430da9c7c58f9ae5f?s=128

David Majda

June 16, 2018
Tweet

Transcript

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

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

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

  4. Python Go JavaScript

  5. Python Go JavaScript gofmt

  6. Python Go JavaScript gofmt Prettier

  7. Python Go JavaScript YAPF gofmt Prettier

  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
  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
  10. YAPF • spousta nastavení • složitější algoritmus ◦ rozhodovací strom

    ◦ váhy ◦ heuristiky • občas formátuje „divně“
  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)
  12. a = [1, 2] a = [1, 2] a =

    [1, 2,] a = [ 1, 2, ]
  13. Jak použít?

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

  16. None
  17. Naše zkušenosti

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

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

    rustfmt ⋮
  20. Autoformátujte! David Majda @dmajda