Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Python Go JavaScript

Slide 5

Slide 5 text

Python Go JavaScript gofmt

Slide 6

Slide 6 text

Python Go JavaScript gofmt Prettier

Slide 7

Slide 7 text

Python Go JavaScript YAPF gofmt Prettier

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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)

Slide 12

Slide 12 text

a = [1, 2] a = [1, 2] a = [1, 2,] a = [ 1, 2, ]

Slide 13

Slide 13 text

Jak použít?

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

make format make format-check npm run format npm run format-check

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Naše zkušenosti

Slide 18

Slide 18 text

Nejtěžší je vzdát se kontroly

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Autoformátujte! David Majda @dmajda