10 dôvodov, prečo potrebujete optimalizáciu kódu
Kým píšeme kód, neustále sa rozhodujeme a vyberáme medzi riešeniami, ktoré sa môžu na prvý pohľad zdajú byť ekvivalentné. Neskôr sa to zvyčajne ukáže niektoré možnosti vedú k efektívnejšiemu programu než k iným, takže prirodzene vzniká snaha o najlepšie postupy kódovania a optimalizačné techniky a my začneme vidieť celý proces vývoja ako optimalizačný problém na vyriešenie.
Napriek tomu, že problémom s optimalizáciou nie je jediný, s ktorým sa vývojári pravidelne zaoberajú, napríklad problémy s rozhodovaním a problémy s vyhľadávaním, optimalizácia je úloha, ktorá zahŕňa rôzne fázy vývoja webu, pravdepodobne najviac.
Optimalizácia kódu môže prebiehať na rôznych úrovniach, v závislosti od toho, ako blízko sa optimalizácia vykonáva, je strojový kód. Pri vývoji webových stránok môžeme vykonávať iba optimalizácie na vyššej úrovni, pretože optimalizácie na úrovni Assembly alebo runtime nie sú pre nás voľbou, ale stále máme veľa príležitostí.
Môžeme optimalizovať náš kód na úrovni architektúry inteligentné dizajnové vzory, na úrovni zdrojového kódu využitím najlepších postupov kódovania a použitím vhodných nástrojov a tiež môžeme zlepšiť výkon nášho tímu zavedenie sprievodcov štýlom kódovania do nášho pracovného postupu.
Bez ohľadu na to, s akou technikou sa budeme snažiť, je to jedno pravidlo, že každá snaha o optimalizáciu kódu musí nasledovať: vždy musíme vykonať optimalizáciu spôsobom, ktorý nezmení význam kódu.
Výhody optimalizácie kódu rastie v súlade s rastom nášho projektu a ako dokonca aj na začiatku malé projekty môžu byť časom veľké, získanie pevných schopností optimalizácie kódu má takmer vždy merateľné pozitívne výsledky.
1. Základňa kódu čistejšie
Ako projekt dozreje a stále viac a viac vývojárov začne pracovať na tom, duplicity a prekrývanie sa zvyčajne skôr či neskôr objavia a zrazu si uvedomíme, že sotva pochopíme, čo sa deje.
Nie je náhoda, že udržiavanie zásady DRY (Do not repeat yourself) je jedným zo základných kameňov efektívneho vývoja softvéru. Dobre vystužená, starostlivo optimalizovaná kódová základňa, v ktorej sme schopní opakovane použite rovnaké prvky je vždy hladšia a jemnejšia, a preto je oveľa jednoduchšie pochopiť a pracovať.
2. Vyššia konzistencia
Konzistencia je ako domáca práca, keď sa riadne postará o to, aby si to nikto nevšimol, ale keď je to zanedbané, celé miesto vyzerá nepríjemne a ocitneme sa v chaose.
Dosiahnutie úplnej konzistencie je ťažké, ako zabezpečenie spätnej kompatibility môže nakoniec dosiahnuť zlepšenie, ale venujte pozornosť pomocou koherentných pokynov pre kód, kompatibilných rozhraní API a konzistentných štandardov môže určite zmierniť bolesť.
Zvlášť dôležité je mať na pamäti konzistenciu kódu keď sa musíme zaoberať starším kódom, alebo v prípade väčších projektov zapojiť veľa vývojárov.
3. Rýchlejšie stránky
Optimalizácia kódu je podobná nákupu rýchlejšieho auta. Výsledkom je náš kód rýchlejšie, a naše stránky alebo aplikácie spotrebuje menej pamäte ako predtým. Aj keď proces optimalizácie môže vyžadovať dodatočný čas a peniaze, výsledok je a lepšie skúsenosti, nielen pre vývojárov, ale aj pre koncových používateľov.
Rýchlejší kód zahŕňa kratšie časy načítania stránky čo je veľký problém v obidvoch oblastiach optimalizácie pre vyhľadávače a marketingu konverzií. Výskum hovorí “takmer polovica používateľov webu očakáva, že stránky sa načítajú za 2 sekundy alebo menej a majú tendenciu opustiť stránky, ktoré nie sú načítané do 3 sekúnd”, tak rýchlosť zjavne nie je oblasť, ktorú môžeme bezpečne ignorovať.
4. Lepšia čitateľnosť kódu
Čitateľnosť je dôležitým aspektom udržiavateľnosti kódu. Neoprávnený kód s formátovaním ad hoc je ťažko čitateľný, preto je ťažké ho pochopiť, a to najmä pre vývojárov, ktorí sú noví v projekte.
Môžeme sa chrániť bolesť pri riešení nezrozumiteľného kódu ak použijeme určité techniky optimalizácie kódu, ako napríklad:
- používajúc koherentné názvové konvencie so zmysluplnými názvami, ako napríklad BEM
- konzistentné formátovanie s logickým využitím odsadenia, medzery a vertikálneho odstupu
- vyhnúť sa zbytočnému hluku, ako sú samozrejmé, zjavné pripomienky
To je dôvod, prečo veľké projekty, ako napríklad WordPress, jQuery a Mootools, majú jasné pokyny pre štýly kódovania, ktoré každý zúčastnený vývojár musí dodržiavať.
5. Efektívnejšie refaktorovanie
Často sa vyskytuje v rozvoji webových stránok, že dedíme kód od niekoho iného a rýchlo pochopíme, že to je ďaleko od toho, aby boli optimálne, či už z hľadiska štruktúru, výkon alebo údržbu. Rovnaká vec sa môže stať aj pri našich predchádzajúcich projektoch, ktoré sme napísali, keď sme mali oveľa menej skúseností v programovaní.
V iných prípadoch ciele inak skvelého projektu sa časom menia, a musíme to uprednostniť iné veci v aplikácii ako predtým.
Hovoríme o refaktoringu, keď my zmeniť (vyčistiť) existujúci kód aby sa optimalizovala bez toho, aby sa zmenila funkcia. Refactoring musí byť vykonávaný s veľkou starostlivosťou, akoby to bolo urobené nesprávnym spôsobom, môžeme ľahko skončiť s kódovou základňou, ktorá je ešte menej optimálna ako pôvodná.
Našťastie máme na našich rukách veľa osvedčených techník, ktoré môžu robiť refaktorovanie plynulým procesom.
6. Viac priame ladenie
Debugovanie zaberá významnú časť pracovného toku vývoja webu a zvyčajne je to zdĺhavá alebo dokonca skľučujúca úloha. Je to dosť ťažké, ak musíme debugovať vlastný kód, ale je to oveľa horšie, keď musíme nájsť chyby v niekom inom, najmä ak je to niečo ako nekonečný špagetový kód, ktorý nepoužíva nič iné ako funkcie.
Inteligentný dizajn a architektonické vzory, ako napr pomocou objektov a rôznych modulov, a jasné pokyny pre kódovanie môže uľahčiť ladiaci proces, aj keď s najväčšou pravdepodobnosťou ešte nebude našou najobľúbenejšou úlohou.
7. Zlepšenie pracovného toku
Mnohé projekty vývoja webových aplikácií sú spravované distribuovanými tímami, ako sú komunita s otvoreným zdrojovým kódom alebo vzdialené tímy. Jednou z najťažších vecí v riadení takéhoto pracovného postupu je nájsť spôsob, ktorý umožní komunikáciu dostatočne efektívnu umožniť členom tímu ľahké pochopenie, a nemusíte neustále diskutovať o nesplácaní.
Dohodnuté na základe osvedčených postupov a sprievodcov štýlom môžu preklenúť priepasť medzi ľuďmi z rôznych prostredí, nehovoriac o bežných komunikačných ťažkostiach medzi dizajnérskymi a vývojovými tímami vo väčšine webových projektov.
Optimalizácia kódu je tiež optimalizácia pracovného toku, ako keby členovia tímu hovorili spoločným jazykom a zdieľali rovnaké deklarované ciele, budú môcť spolupracovať aj bez oveľa menších problémov.
8. Jednoduchšia údržba kódu
Napriek tomu, že budovanie niečoho od základu býva zábavnejšie ako zachovanie existujúceho kódu, niekedy musíme stále vykonávať trvalú údržbu kódu. Práca s už existujúcimi systémami nám tiež prináša nové názory na optimalizáciu kódu, pretože je to iná skúsenosť ako skoré optimalizácie v novom projekte.
Pri údržbe softvéru sme už v štádiu, keď môžeme zachytiť skutočné problémy s výkonom a efektívnosťou a pracovať s reálnymi používateľmi namiesto prípadov hypotetického použitia.
Udržiavanie kódu zvyčajne nemá veľký rešpekt v kruhoch vývojárov, ale stále môže byť obrovskou úlohou, ak budeme dodržiavať osvedčené postupy, ako napríklad používanie spoľahlivé ovládanie verzie, správu závislostí, staging a testovacie platformy, a správne dbajte na dokumentáciu.
9. Rýchlejší vývoj funkcií
Konštantná inovácia je jadrom toho, aby sme zostávali relevantní v našej oblasti, pretože v prípade, že sme pre našich používateľov nijako nijako neukázali, za chvíľu môžeme rýchlo zotrvať. Rozšírenie projektu a pridanie nových funkcií k nemu je zvyčajne omnoho rýchlejšie, ak pracujeme s dobre optimalizovanou čistou základňou kódov.
Okrem už opísaných metód optimalizácie kódu môže vývoj funkcií získať aj dynamiku, ak budeme pokračovať moderné metódy riadenia projektov, napríklad ak používame modely namiesto tradičného modelu vodopádov s iteračnými modelmi životného cyklu.
10. Menší technický dlh
Termín "technický dlh" vytvoril Ward Cunningham, programátor, ktorý tiež vyvinul prvú wiki. Porovnáva dôsledky našich zlých programových rozhodnutí, ktoré sa časom nahromadia na finančný dlh, v ktorom ľudia platia úroky v budúcnosti, aby mohli rýchlo získať peniaze v súčasnosti.
Tieto menej než optimálne rozhodnutia sa zvyčajne prejavujú vo forme rýchlych opráv, kopírovania a vloženia programovania, hard-codingu, kódovanie antipatterny a nedbalé pracovné návyky.
Je to v podstate nemožno úplne vyhnúť technickému dlhu, pretože aj dobré rozhodnutia môžu byť v budúcnosti menej žiaduce, ale ak dôsledne optimalizujeme náš kód, určite to bude zaťažené oveľa menším technickým dlhom.