SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Autoformátování
kódu
Devel.cz 2018 · Praha · 16.6.2018
David Majda
@dmajda
Kdo někdy vedl diskuzi o
formátování kódu?
Autoformátování
podobným diskuzím
předchází
Python
Go
JavaScript
Python
Go
JavaScript
gofmt
Python
Go
JavaScript
gofmt
Prettier
Python
Go
JavaScript
YAPF
gofmt
Prettier
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
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
YAPF
● spousta nastavení
● složitější algoritmus
○ rozhodovací strom
○ váhy
○ heuristiky
● občas formátuje „divně“
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)
a = [1, 2]
a = [1, 2]
a = [1, 2,]
a = [
1,
2,
]
Jak použít?
make format
make format-check
npm run format
npm run format-check
Naše zkušenosti
Nejtěžší je vzdát se
kontroly
Python
Go
JavaScript
YAPF
gofmt
Prettier
C/C++
Rust
⋮
ClangFormat
rustfmt
⋮
Autoformátujte!
David Majda
@dmajda

Mais conteúdo relacionado

Mais de Develcz

Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Develcz
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslDevelcz
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLDevelcz
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíDevelcz
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostDevelcz
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonDevelcz
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloDevelcz
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Develcz
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDevelcz
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Develcz
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalDevelcz
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěDevelcz
 
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítMartin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítDevelcz
 
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!Develcz
 
Karel Smutný: Jak se samo-organizujeme v Brand Embassy
Karel Smutný: Jak se samo-organizujeme v Brand EmbassyKarel Smutný: Jak se samo-organizujeme v Brand Embassy
Karel Smutný: Jak se samo-organizujeme v Brand EmbassyDevelcz
 
Martin Šimeček: Chytré boty do každé rodiny
Martin Šimeček: Chytré boty do každé rodinyMartin Šimeček: Chytré boty do každé rodiny
Martin Šimeček: Chytré boty do každé rodinyDevelcz
 
Richard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptuRichard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptuDevelcz
 
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tactics
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tacticsBára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tactics
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tacticsDevelcz
 
Michal Kovařík: Multiplayer ve Factoriu
Michal Kovařík: Multiplayer ve FactoriuMichal Kovařík: Multiplayer ve Factoriu
Michal Kovařík: Multiplayer ve FactoriuDevelcz
 
Jirka Kosek: CSS Paged Media aneb Gutenberg v prohlížeči
Jirka Kosek:  CSS Paged Media aneb Gutenberg v prohlížečiJirka Kosek:  CSS Paged Media aneb Gutenberg v prohlížeči
Jirka Kosek: CSS Paged Media aneb Gutenberg v prohlížečiDevelcz
 

Mais de Develcz (20)

Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnost
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To Reason
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadlo
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the Ugly
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/Drupal
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
 
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítMartin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
 
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!
Ondřej Mirtes: Usnadněte si práci silně typovaným kódem a statickou analýzou!
 
Karel Smutný: Jak se samo-organizujeme v Brand Embassy
Karel Smutný: Jak se samo-organizujeme v Brand EmbassyKarel Smutný: Jak se samo-organizujeme v Brand Embassy
Karel Smutný: Jak se samo-organizujeme v Brand Embassy
 
Martin Šimeček: Chytré boty do každé rodiny
Martin Šimeček: Chytré boty do každé rodinyMartin Šimeček: Chytré boty do každé rodiny
Martin Šimeček: Chytré boty do každé rodiny
 
Richard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptuRichard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptu
 
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tactics
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tacticsBára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tactics
Bára Bühnová: Naučte se taktizovat s pomocí bad code smells a quality tactics
 
Michal Kovařík: Multiplayer ve Factoriu
Michal Kovařík: Multiplayer ve FactoriuMichal Kovařík: Multiplayer ve Factoriu
Michal Kovařík: Multiplayer ve Factoriu
 
Jirka Kosek: CSS Paged Media aneb Gutenberg v prohlížeči
Jirka Kosek:  CSS Paged Media aneb Gutenberg v prohlížečiJirka Kosek:  CSS Paged Media aneb Gutenberg v prohlížeči
Jirka Kosek: CSS Paged Media aneb Gutenberg v prohlížeči
 

David Majda: Autoformátování kódu