Používať či nepoužívať formátovanie kódu podľa PEP8

Prednedávnom ma poprosil jeden chalan, či by som mu neotestoval jeho aplikáciu na MacOS. Išlo o Python aplikáciu (GUI), ktorá bežala na PyQt5. Nainštalovať a nakonfigurovať PyQt5 na MacOS mi dalo celkom zabrať (ale o tom možno niekedy nabudúce). Takže nakoniec sa mi podarilo jeho aplikáciu spojazdniť a otestovať.

Prekvapenie na mňa čakalo keď som otvoril zdrojové kódy v mojom editore (VIM), takmer každý riadok bol červený kvôli porušeniu pravidiel formátovania kódu PEP8 alebo kvôli porušeniu "best practices" (napr. import *). To ma celkom zaskočilo, lebo projekt bol po funkčnej aj grafickej stránke na vysokej úrovni. Hňed ma napadlo že pri vývoji bol asi použitý nejaký "jednoduchý" editor, lebo IDE by už určite "kričalo" že je chybné formátovanie kódu. V podstate som nakoniec aj mal pravdu, pri vývoji bol použitý editor Geany. Ale to nebola príčina prečo autor projektu nepoužil formátovanie kódu podľa štandardu PEP8. Dostal som takúto odpoveď:

snazim sa pouzivat co najednoduchsie 'instrumenty', pri tych komplikovanejsich som par krat narazil na to, ze si zacali kadeco 'vymyslat' a riesil som problemy s prostredim a nie vlastnou robotou ... pouzivam jednoduche Geany

PEP8 samozrejme poznam, ale aj tak preferujem napr. pouzivanie tabulatorov pred medzerami a pod. uz som par krat cumel do kodu ako blbec do hodin a nevidel tam tu medzeru navyse ... Ostatne hriechy su uz sekundarneho charakteru - tie planujem postupne precistit pri nejakej release aj s pisanim dokumentacie ....

Toto je typické pre projekty, ktoré píše jeden človek. V podstate si editor nakonfiguruje podľa svojich preferencií a kedže nikto iný do zdrojákov nevidí tak sa stým netreba zaoberať.

Prvý problém nastáva hneď ako náhle začne niekto ďalší spolupracovať na projekte. Keď si otvorí projekt v editore (IDE), tak v ľepšom prípade uvidí "písmenkovú polievku". Jeden z dôvodov prečo bol vytvorený dokument PEP8 je zvýšenie čitatelnosti zdrojového kódu. Napríklad štandarná knižnica jazyka Python musí byť formátovaná podľa PEP8.

Raz som s kamarátom robil párové programovanie na projekte (Android), ktorý som programoval sám a potreboval som s niečim pomôcť. Prvú pol hodinu mi preformátovával zdrojový kód, že on to zvykne formátovať inak. A potom som to neskôr zase je prepisoval naspäť lebo sa to nepáčilo mne :) Presne toto je dôvod prečo je dobré používať nejaké 'konvencie' pre formátovanie kódu, aby bol zdrojový kód konzistentný a ľahko čitatelný pre všetkých členov tímu.

Bol som zvedavý ako to robia v iných projektoch, tak som sa spýtal kamaráta ako to robia oni (startup z Francúzska / Ruby). Bolo zaujímavé že v podstate nepoužívali žiadne štandardy na formátovanie kódu, len mali pravidlo že sa kód odsadzuje pomocou dvoch medzier. Ale všetky "commity" prechádzali ešte cez jedného človeka, ktorý potom ešte kód kontroloval a opravoval formátovanie (o nesprávnom formátovaní posielal správu developerovi).

V štandarde PEP8 sú niektoré pravidlá diskutabilné, ako napríklad pravidlo o maximálnej dĺžke riadku 80 znakov. Osobne sa snažím PEP8 dodržiavať ale občas musím spraviť výnimku lebo by kód už paradoxne nebol čitatelnejší.

Osobne odporúčam na Python projektoch používať buď priamo PEP8 alebo aspoň nejaké interné/firemné pravidlá formátovania kódu, aj keď pracujete na projekte sami. Skôr či neskôr sa Vám to určite vyplatí.

Show Comments