Programátor, který potřebuje intenzivně refaktorovat, je jako malíř, který potřebuje každý tah štětcem několikrát přemalovávat než se strefí, nebo truhlář, který každý druhý řez musí slepovat a spoj zase řezat, než to udělá alespoň trochu použitelně, protože má pocit, že nakreslit si to nejdřív na papír a propočítat ho neuvěřitelně zdržuje, nebo jeho abstraktní představivost na to zkrátka nestačí, a tak pracuje systémem pokus-omyl, protože chemikálie a nářadí mu to umožňují. To rozhodně není dobrá práce a ani podobně pracující programátor nezasluhuje přívlastek "dobrý".
Malíř i truhlář udělají svou práci, odevzdají výsledek a tím to pro ně končí. Pokud programátor odevzdá svůj program a nikdo po něm nikdy nebude chtít změny, znamená to, že ten program je k ničemu a nikdo ho nepoužívá. Tady se nebavíme o tom, že by programátor neustále předělával nehotový kód. Refaktoruje se většinou kód, který byl napsán dříve, nějakou dobu se používal, a později se ukáže, že neodpovídá novým požadavkům. A i pokud jde o to předělávání během vývoje – podívejte se třeba, kolikrát se předělávají patche do Linuxu. A to vidíte jenom ty veřejné předělávky, nevidíte, kolikrát to předělával autor sám, skrytě. Jsou všichni vývojáři Linuxu neschopní programátoři?
programátorovi chybí motivace psát kvalitní kód
Zřejmě si pořád představujete, že kód se upravuje převážně proto, že ho někdo napíše záměrně špatně. Tak to ale není. Kód se upravuje také pro to, že se změní požadavky, nebo proto, že je možné ten kód napsat lépe. Pokud se někdo dívá na svůj starý kód, a považuje ho za dokonalý a nic by na něm neměnil, těžko může být dobrý programátor.
Rychlost psaní kódu je naopak jedním z marketingových taháků řady IDE
Rychlost
psaní kódu? Opravdu? Které IDE se tím chlubí? Já o
rychlosti psaní čtu akorát od zastánců toho, že textový editor je lepší než IDE.
Je to inženýrská práce se vším všudy, tedy i s plánováním a promýšlením budoucího postupu a vzájemných vazeb.
Inženýři zkoušeli navrhovat celá města, a nikdy se jim to nepovedlo. Stejně toho jde nakonec spousta jinak, než bylo naplánováno – a dobrý inženýr se tomu musí umět přizpůsobit, nesnažit se marně ohýbat realitu do svých plánů, ale přizpůsobit své plány realitě.
Ale je velmi nežádoucí to ve velkém rozsahu činit při implementaci, a to jen proto, protože to k tomu svádí, protože to lze
Ne protože to svádí a protože to lze, ale protože se změnily okolní podmínky. Máme dnes ve městech udržovat infrastrukturu pro analogové telefonní linky, když se dnes používají digitální technologie a mobilní telefony? Byla špatně naplánovaná města, když počítala s infrastrukturou analogových linek a ne s mobilními sítěmi? Byla špatně naplánovaná města, když počítala především s pěším provozem a koňskými povozy?
Ale v půlce projektu překopávat rozhraní, struktury a vazby jednotlivých objektů a vlastně ani nemít v této fázi o nich žádnou jasnou představu jen proto, protože to lze relativně snadno změnit - to je zlo.
To, že se kód mění, neznamená, že v daném okamžiku neexistuje jasná představa, jak má vypadat. Existuje. Akorát že se v čase mění, tak, jak se mění okolní prostředí, jak se mění zadání. Proč by mělo v projektu zůstat rozhraní, struktury a vazby takové, jaké byly na začátku, k čemu je dobré, že tak zůstanou měsíce, roky, desítky let?
Mimochodem, právě ta IDE umožňujíc získat lepší představu o vyšších úrovních projektu, než je zdrojový kód, protože poskytují nástroje pro snadné procházení kódu a pro zobrazení jeho vyšších úrovní. Textový editor je zaměřený jen na tu nejspodnější část, na samotný kód. Pokud chcete něco vyššího, musíte textový editor kombinovat s dalšími nástroji (které má IDE už vestavěné).