it-swarm-eu.dev

Vlastně píšete „čistý kód“?

Viděl jsem, jak někteří programátoři znovu a znovu vylepšují svůj kód nejen proto, aby to fungovalo dobře, ale také aby to vypadalo dobře.

IMO, „čistý kód“ je ve skutečnosti kompliment, který ukazuje, že váš kód je elegantní, dokonale pochopitelný a udržovatelný. A rozdíl vyjde, když si musíte vybrat mezi esteticky přitažlivým kódem a kódem, na který je stresující se podívat.

Kolik z vás tedy vlastně píše „čistý kód“? Je to dobrý postup? Jaké jsou další výhody nebo nevýhody tohoto?

57
ykombinator

Řekl bych, že mnozí z nás nepíšou čistý kód . A obecně to není naše práce . Naší úlohou jako vývojářů softwaru je dodávat produkt, který funguje, včas.

Připomínám mi blogový příspěvek Joela Spolského: The Duct Tape Programmer .

Cituje z Coders at Work :

Na konci dne odešlete f ***** g věc! Je skvělé přepsat váš kód a učinit jej čistějším a potřetí to bude ve skutečnosti hezké. Ale to není smysl - nejsi tady psát kód; jste tady, abyste dodávali produkty. - Jamie Zawinsky

Rovněž mi připomíná odpověď Roberta Martina na blog :

Tak. Buď chytrý. Buďte čistí. Buďte jednoduchí. Loď! A připravte si malou roli lepicí pásky a nebojte se ji použít. - Strýčku Bobe

Pokud kód, který píše vývojář, bude čistý a funguje (je možné ho doručit), ať už je to dobré, je dobré pro všechny. Pokud se však vývojář snaží pohrávat s čistým a čitelným kódem na úkor včasného doručení, pak je to špatné. Nechte to fungovat, použijte lepicí pásku a odešlete ji. Můžete to změnit později a učinit z něj nádhernou a efektivní.

Ano, je dobré psát čistý kód, ale nikdy na úkor schopnosti dodat. Výhoda plynoucí z dodávání produktu s lepicí páskou na čas daleko převažuje nad výhodami čistého kódu, který nebyl nikdy dokončen a dodán.

Dobrý kus kódu, na který jsem narazil, není čistý. Některé jsou přímo ošklivé. Všichni však byli propuštěni a použiti ve výrobě. Někteří mohou říci, že je neprofesionální psát chaotický kód. Nesouhlasím. Profesionální je dodávat kód, který funguje, ať už je čistý nebo chaotický. Vývojář musí udělat, co může, s ohledem na čas, který byl přidělen před doručením. Pak se vraťte k úklidu-- to je profesionální. Doufejme, že dodaný kód není čistě lepicí páskou a je „dostatečně čistý“.

54
spong

Musíte zajistit, aby byl váš kód velmi čitelný, čistý a udržovatelný. To je to, co všichni programátoři musí dělat.

Ale mluvíte o over styling (jako ten termín lepší než dívčí kód ), který slouží jen egu jeho autora.

V minulosti jsem viděl mnoho vývojářů tak hrdých na jejich vytvoření (víte, jako v toaletách;)), trávili hodiny úklidem a leštěním kódu. Někteří z nich byli tak pečliví, že zajistili, že budou dodrženy správné bílé mezery mezi členy.

Je toho moc.

Toto chování považuji za kontraproduktivní. V profesionálním kontextu musíte být profesionální . Svou spokojenost můžete dosáhnout psaním čistého, velmi čitelného a udržovatelného kódu a mluvením se spokojenými uživateli nebo kolegy.

39
user2567

Nesouhlasil bych s přijatelnou odpovědí na tuto otázku.

Vaší odpovědností je samozřejmě dodávat, ale obvykle máte také povinnost dodávat něco, co je možné udržovat co nejefektivněji vy sami a budoucí vývojáři.

Strávil jsem období, jako ten špatný programátor údržby nebo konzultant na místě, který musí rozumět a odladit nějaký obrovský nezdokumentovaný systém, a mohu vám říci, že špatné návrhy a chaotický matoucí kód mohou vést k hodinám nebo dokonce dní zbytečného úsilí. Dokážu vymyslet spoustu situací, kdy by další N hodin úsilí původního vývojáře mohlo vést k 5N úsporám nákladů, pokud jde o můj čas.

Vím, že se kolem toho vznáší statistika, ale podle mých zkušeností napříč několika projekty je každý řádek kódu, který je zapsán, přečten 5 až 20krát během rozšíření a údržby.

Takže bych řekla vyčistěte kód do vzdálenosti jednoho centimetru od jeho života. Zabere to čas, ale je to pravděpodobně úspora čistých nákladů po celou dobu trvání projektu.

24
Benjamin Wootton

Koupil by někdo z nás auto, pokud víme, že pod kapotou je vše špinavé a obtížné jej řešit, udržovat nebo opravovat a běh vyžaduje více prostředků, než by měl?

Proč by se to mělo lišit pro kus softwaru?

To, že koncoví uživatelé nemohou hledět pod kapotou, neznamená, že to nikdy nebudou vědět. Dříve nebo později se to ukáže.

Odpověď na otázku „Vlastně píšete„ čistý kód “?“ - Jo, jo!

21
Sifar

Pokud máte na mysli „čistý kód“, mám na mysli, že se snažím zajistit, aby byl kód co nejjasnější?

Sakra ano.

Čistší, jasnější kód, tím snazší je jeho údržba, a tím vám dlouhodobě ušetří čas. Nedívejte se na čistý kód jako marnost; podívejte se na to jako investice při úspoře budoucího úsilí a času.

18
GrandmasterB

Upřímně, záleží. Líbí se mi, jak každý chrlí linii strany o tom, jak „něco méně než čistě dobře zdokumentovaného kódu je pouhá travesty!“, Ale pracuji v podnikání s směšnými nasazovacími cykly a nulovým dohledem: Snažím se, co mohu, ale píšu to mnoho kódu je extrémně obtížné napsat čistý dokonalý kód, který všichni ostatní tvrdí , které píšou.

Snažím se psát kód, který může snadno udržovat někdo, kdo má zhruba moje schopnosti. Komentuji složité části, pojmenovávám programy, proměnné a názvy tříd podle tříd, nasazuji je a pohybuji se dál. Nemám čas dělat nic jiného.

Někdy se za to cítím trochu provinile, ale ne moc. Měli byste vidět některé hrůzy, se kterými se každý den zabývám. Dekády vlastního kódu v nejasných jazycích s nulovou dokumentací. Jeden z mých spolupracovníků se vyvíjí výhradně v jazyce Visual Basic 6.0 a všude zavádí krypticky pojmenované binární soubory. Žena, kterou jsem nahradil, programoval výhradně v RPG .

Je pro mě nesmírně obtížné uvěřit, tolik hrozných keců, jaké jsem viděl v mých letech jako programátor, že všichni generují pouze čistý kód.

15
Satanicpuppy

Nemyslím si, že se mi líbí termín „dívčí kód“, ale čistý kód = udržovatelný kód. Všechno méně je neprofesionální.

Obecně považuji dalšího vývojáře, který se musí podívat na můj nepořádek.

Mnohokrát jsem to já ... o několik měsíců později ... když si nepamatuji, jak to funguje ... a mám ještě méně času na změnu.

7
Heath Lilley

Snažím se psát „čistý kód“ ve smyslu Bob Martin (např. OO design). Při psaní čistého kódu existuje skvělá hodnota. Je mnohem udržovatelnější.

Pak jsem nechal ReSharper, aby mi udělal „pěkný kód“ (např. Zarovnání, konce řádků atd.). Při psaní pěkného kódu existuje dobrá hodnota. Ale tam jsou klesající výnosy. Díky nějaké předběžné úpravě je díky snadnějšímu čtení trochu udržovatelnější.

Pokud máte pocit, že úhledně zarovnáte obrovské bloky kódu, abyste je mohli číst, je problém váš obrovský blok kódu! Je to moc velké. Vidím mnoho příkladů lidí, kteří dělají velké bolesti, aby předstírali velmi špatně navržený kód.

Kdybych neměl ReSharper, měl bych stále čistý kód, ale nebylo by to tak hezké.

Nemyslím si, že bych měl strávit více než ~ 5% svého kódovacího času předstíráním. Což znamená silnější můj editor a čím jsem s ním zdatnější, tím více mohu udělat předstírání.

5
dss539

Zdá se, že nikdo nezvýší bod co je v nejlepším zájmu vaší společnosti?

Často, ne-li vždy, jsou programátoři jen zaměstnanci, a přestože nás rozhodnutí o řízení mohou frustrovat, často nemáme všechna data, která dělají.

Například řekněte, že společnost má smlouvu s doložkou, že pokud software není připraven včas, nedostanete zaplaceno (jen se nám to stalo, i když si myslím, že jsme nakonec dostali platbu). Ano, čistý kód je důležitý, ale důležitější je, aby kód fungoval v den platby!

Další příklad - společnost je ve špatné finanční situaci a potřebuje získat nějaké peníze. Hádejte, kdo se stará o kvalitu? Můžete to napravit později, pokud to musíte, prostě to poslat!

Argumentem může být „Proč bych měl vyprodávat a psát mizerný kód?“. Proč by vám měla vaše společnost platit každý měsíc pěkný šek? Volby, příteli. Pokud jste po idealismu, zkuste Free Software Foundation ; Slyšel jsem, že dělají docela pěkné věci (myslím tohle, a respektuji FSF a OSS).

Na druhou stranu, pokud pracujete na projektu, kde se očekává explozivní růst využití (ačkoli takové projekce jsou téměř nikdy přesné), raději položte pevné základy s nejlepší požadovanou kvalitou kódu, protože je to téměř určitá údržba být větší náklady na projekt.

Programátoři milují „čistý“ kód, ať už to znamená cokoli. Nemůžeme se dokonce shodnout na tom, co je čisté, ale milujeme to. Někdy však na tom nezáleží, stejně jako použitelnost a správnost. Mohlo by se to zdát synonymní, ale nejsou - pokud jste viděli kód napsaný skutečným hackerem Perl za 4 hodiny s úmyslem ho použít dvakrát a zahodit, uznáte, že to není čisté, ale funguje to.

Takže někdy, např. Stranou, bychom to měli nechat fungovat. Všimněte si, že nedoporučuji psát špatný kód jako zvyk; Jen poukazuji na to, že by to mohlo být nutné. Dokonalost vyžaduje čas, který vaše společnost nemusí mít. Takže pokud vášmu zaměstnavateli nevadí, řemeslný software, ale pokud potřebujete, stačí napsat pracovní kód, nevadí „čistota“. Není to jen odpověď „Jedna velikost vyhovuje všem“ - měli byste upřednostnit.

4
K.Steff

Nikdy není nic dobrého.

Důležitou věcí, kterou je třeba pamatovat na kód „nečistý“, je však to, že může snadno vést k „ rozbitá okna “. Pokud je kód velmi špatně naformátovaný, domnívám se, že mnoho lidí, kteří jsou v kódové základně noví, by se mohlo cítit méně nakloněni dělat dobrou práci s údržbou a vývojem, což by způsobilo spirálu směrem dolů, která by mohla nakonec ovlivnit pracovní stav softwaru.

Proto je zachování určité úrovně čistoty v kódu prospěšné pro více než jen pro vaše vývojáře. Nestrávíte na tom příliš mnoho času (bylo zmíněno ~ 5%). Naučte se používat nástroje svého řemesla k automatizaci manuálních úloh (formátování kódu v tomto případě). Převezměte odpovědnost za to, co děláte, a vždy dělejte, co považujete za nejvýhodnější pro vaši společnost/zákazníky/uživatele.

3
Per Noalt

Toto je citát z Clean Code, Bob Martin:

Chcete-li řídit tento bod domů, co kdybyste byli lékařem a měli jste pacienta, který požadoval, abyste zastavili veškeré hloupé mytí rukou při přípravě na chirurgický zákrok, protože to trvalo příliš dlouho? Je jasné, že pacient je šéf; a přesto by měl lékař naprosto odmítnout vyhovět. Proč? Protože lékař ví více než pacient o rizicích onemocnění a infekce. Bylo by neprofesionální (nevadí zločinecké), aby lékař vyhověl pacientovi.

Pro programátory je proto neprofesionální, aby se uchýlili k vůli manažerů, kteří nerozumí rizikům, že budou dělat nepořádky.

3
Tulains Córdova

Nejsem si jistý, že „vypadají dobře“ a že „elegantní, dokonale pochopitelné a udržovatelné“ je rovnocenné.

Snažím se psát kód, který je „elegantní, dokonale pochopitelný a udržovatelný“. Vylepšuji svůj vlastní kód, aby lépe vyhovoval těmto kritériím.

Nevidím žádné nevýhody, kromě výsledných nákladů v čase.

Aby kód „vypadal dobře“, existuje spousta automatizovaných nástrojů, které správně odsadí a umístí vše, co si přejete.

3
back2dos

Líbí se mi, aby byl kód čitelný, ale nejdůležitější věcí je konzistence. Pro mě to znamená konzistenci s konvencemi pro pojmenování a mezery mezi funkcemi, závorky na stejném řádku nebo na dalším řádku příkazu if atd.

Samozřejmě jsou chvíle, kdy někdo programuje něco s konzistentním stylem kódu a stále mě to šílí. Obzvláště kód, který „nedýchá“. Například:

void function1(){
    //whatever code
}
int fooBar(){
    //whatever else
}
Foo* someOtherFooBar(int value){
    if(value){
        //do something
    }
    return ...;
}

No ... Vypadá to horší s metodami Objective-C a se spoustou a spoustou vnořených příkazů if a řádky mnohem delší než 80 znaků. Ale stále mě to obtěžuje :)

2
vedosity

Myslím, že „čistý kód“ by měl být stejně čistý nebo čistší, než jak jste psali na svých fyzických/inženýrských/matematických zkouškách. Pokud je to příliš špinavé, srovnávač nerozumí vaší práci a pravděpodobně to označí špatně, i když má pravdu.

2
chiurox

Chodím do velké délky, abych vyčistil kód. Myslím, že to výrazně pomáhá vyniknout chyby.

Nesouhlasím s konceptem „poslat kurva věc nyní“, protože čistý kód je investicí do budoucnosti. Také příliš mnoho softwaru je dodáváno s příliš velkým počtem chyb. Řešení jedné chyby je podle mého názoru lepší než implementace jedné nové funkce.

Také pokud se podíváte na odhady produktivity programátora , nemyslím si, že bych skóre velmi špatně. Psaní čistého kódu je zvykem a čím více zkušeností programátora, tím efektivnější se to stane. Pokud to člověk nikdy nezkouší, samozřejmě s tím nikdy nezažije.

Dalším bodem, který je třeba vzít v úvahu, je to, že většina času vývojáře jde na čtení kódu, takže čitelný kód výrazně zkracuje čas strávený čtením. Porozumění například nezdokumentovaným algoritmům může být nákladné a může vyvolat nové chyby.

Jedna věc, kterou mi určitě chybí a chtěl bych mít jeden den, je automatický formátovač kódu, který bych se mohl přizpůsobit mému stylu, který by mě opravdu ušetřil čas, zejména při čtení kódu jiných lidí.

Čisté kódování má souvislost s perfekcionismem, což znamená riziko, že se nikdy nenaplní, ale myslím si, že je to hlavně problém, když začnete, protože do něj investujete později a při opětovném použití vlastních elegantních kódů v kombinaci s vašimi zkušenostmi , stárnutím budete velmi produktivní a mnohem méně pronásledovaní chybami než chaotičtí kodéry.

Toto je kousek kódu demonstrujícího můj styl kódování.

2
user20416

Jen se vyhněte „marnivému kódu“. Existuje spousta vývojářů, kteří dělají věci čistě z marnosti (nebo kvůli OCD) a nic jiného. Moje kalhotky se s těmi lidmi opravdu zkroutily.

1
ElGringoGrande

Píšu kód, který se pokouší daný problém vyřešit nejefektivnějším a teoreticky „elegantním“ způsobem. V tomto smyslu je pouze čisté. Pokud se to stane, když budu hotový, hezky.

Ve svých omezených zkušenostech jsem zjistil, že když si lidé stěžují na „čistý kód“, ošklivost je obvykle spíše výsledkem hrozného řešení než kódování konvencí.

1
Kurtis

Řekl bych, že se snažím psát čistší kód, ale to se může změnit kvůli časovým omezením nebo pokud pracuji na něčem obtížném. Když se zaměřuje na to, aby to fungovalo, má sklon být neuspořádaný. Pak se vrátím a vyčistím, když to přezkoumávám. Pokud se vrátíte do kódu a budete muset strávit příliš mnoho času obnovováním paměti, dostatečně jste to nekomentovali.

Čistý kód je dobrý, ale stejně jako všechno ostatní musí být dostatečně čistý. Odsazení 5 řádků mezer 4 kódu a jeden řádek 5 mezer nezvýší obtížnost čtení.

1
JeffO

Myslím, že to závisí na tom, co děláte. Pokud píšu aplikaci pro ověření konceptu, pak jsem v podstatě kovbojským kódováním zadku a neohlédnutím. Pokud pracuji na aplikaci, na které vlastně budu chvíli pracovat, pak se ujistím, že ji kóduji dostatečně dobře a aby byla ode dneška srozumitelná.

Myslím, že styling vašeho kódu je trochu ohromující. Jak již bylo řečeno výše, Vaším úkolem je vyrobit produkt, nikoli formátovaný kód, ale řekl bych, že alespoň jeden by se měl držet definovaného stylu komentování a kódování věcí. Nerad bych viděl polovinu proměnných velbloudů zapečetěných a druhou polovinu Maďarů.

Ale také záleží na tom, co máte na mysli pod pojmem „čistý kód“.

1
user7007

Změna vzhledu kódu tak, aby byl elegantní, usnadňuje čtení a snadnější údržbu. I drobné věci, jako je zarovnání vašich proměnných přiřazení:

int foo    = 1;
int bar    = 2;
int foobar = 3;

je snadnější číst než

int foo = 1;
int bar = 2;
int foobar = 3;

což znamená, že je snazší přejet, když se chystáte ladit později.

Také v PHP) máte povolen libovolný počet bloků náhodných kódů. Používám je k seskupování logických úloh:

// do x
{
    // ...
}

// do y
{
    // ...
}

Tím se do příslušného kódu přidá jasná definice.

pravit: Jako další bonus je snadné předcházet některému z těchto bloků logického kódu pomocí funkce if (false), pokud jej chcete dočasně přeskočit.

0
Craige

Přiznám se k tomu; a výhoda není naštvaná pokaždé, když to vidím. Myslím, že je také snazší číst, a proto jsou chyby stále patrnější; ale skutečný důvod je ten, že nemohu vydržet ošklivý kód.

0
user281377