10 razloga zašto vam je potrebna optimizacija koda
Dok pišemo kod, neprestano donosimo odluke i biramo između rješenja koja se u početku mogu činiti ekvivalentnima. Kasnije se obično ispostavi da neki izbori rezultiraju učinkovitijim programom od drugih, tako se potraga za najboljim praksama kodiranja i tehnikama optimizacije prirodno javlja, a mi počinjemo vidjeti cijeli proces razvoja kao problem optimizacije koji treba riješiti.
Iako se problemi optimizacije ne bave samo onima koje programeri redovito rješavaju, primjerice postoje problemi pri odlučivanju i traženju problema, optimizacija je zadatak koji obuhvaća različite faze razvoja weba, vjerojatno najviše.
Optimizacija koda može se dogoditi na različitim razinama, ovisno o tome koliko je optimizacija koju provodimo do strojnog koda. U izradi web stranica možemo obavljati samo optimizaciju na višoj razini, budući da optimizacija na razini montaže ili na razini izvedbe za nas nije opcija, ali još uvijek imamo mnogo mogućnosti.
Svoj kod možemo optimizirati na arhitektonskoj razini pametni dizajn uzorci, na razini izvornog koda korištenjem najboljih praksi kodiranja i korištenjem odgovarajućih alata, a mi također možemo poboljšati performanse našeg tima uvođenje vodiča za stil kodiranja u naš tijek rada.
Kakvu god tehnologiju izabrali da slijedimo, postoji pravilo koje svaki slijed optimizacije koda mora slijediti: uvijek moramo izvršiti optimizaciju na način koji ne mijenja značenje koda.
Prednosti optimizacije koda rastu u skladu s rastom našeg projekta, kao i čak i inicijalno mali projekti s vremenom mogu postati veliki, stjecanje solidnih vještina optimizacije koda gotovo uvijek ima mjerljive pozitivne rezultate.
1. Baza čiste šifre
Kao projekt sazrijeva, i sve više i više programera počinje raditi na tome, dupliranja i preklapanja obično se prije ili kasnije pojave, i odjednom shvatimo da jedva shvatimo što se događa.
Nije slučajnost da je zadržavanje načela DRY (Nemojte se ponavljati) na umu jedan od temelja učinkovitog razvoja softvera. Dobro pripremljena, pažljivo optimizirana baza kodova u koju smo u mogućnosti ponovno koristiti iste elemente više puta je uvijek gladak i uredniji, pa je stoga mnogo lakše razumjeti i raditi.
2. Veća dosljednost
Dosljednost je kao kućni poslovi, kada je ispravno zbrinuta, nitko je ne primjećuje, ali kada se zanemari cijelo mjesto izgleda neuredno, a mi se nalazimo u kaosu.
Postizanje potpune dosljednosti je teško, kao osiguravanje kompatibilnosti unatrag može dovesti do poboljšanja, ali obratite pozornost pomoću smjernica koherentnog koda, kompatibilnih API-ja i dosljednih standarda sigurno može ublažiti bol.
Posebno je važno imati na umu konzistentnost koda kada se trebamo baviti naslijeđenim kodom, ili u slučajevima većih projekata uključiti mnoge programere.
3. Brže stranice
Optimizacijski kod sličan je kupnji bržeg automobila. Kao rezultat toga, naš kod izvršava se brže, i naše stranice ili aplikacije troši manje memorije nego prije. Iako je proces optimizacije može zahtijevati dodatno vrijeme i novac, rezultat je a bolje iskustvo, ne samo za programere nego i za krajnje korisnike.
Što znači brži kod kraća vremena učitavanja stranice kao i, što je velika stvar u oba svijeta tražilice optimizacija i pretvorbe marketing. Istraživanje to kaže “gotovo polovica korisnika weba očekuje da će se web-lokacija učitati za 2 sekunde ili manje, a oni napuštaju web-lokaciju koja nije učitana u roku od 3 sekunde”, tako da brzina očito nije područje koje možemo sigurno ignorirati.
4. Bolja čitljivost koda
Čitljivost je važan aspekt održivosti koda. Neuredan kod s ad hoc oblikovanjem teško je pročitati, stoga ga je teško razumjeti, posebno za programere koji su novi u projektu.
Možemo se zaštititi bol koja se bavi nerazumljivim kodom ako primijenimo određene tehnike optimizacije koda, kao što su:
- koristeći koherentne konvencije imenovanja sa smislenim imenima, kao što je BEM
- dosljedno formatiranje s logičkim korištenjem uvlačenja, razmaka i vertikalnog razmaka
- izbjegavanje nepotrebne buke, kao što su jasni komentari
To je razlog zašto veliki projekti, kao što su WordPress, jQuery i Mootools, imaju jasne upute za stil kodiranja koje svaki uključeni razvojni inženjer treba slijediti.
5. Učinkovitiji refactoring
To se često događa u web razvoju da naslijedimo kod od nekoga drugoga, i brzo shvatimo da je to daleko od optimalnog, bilo u smislu struktura, izvedba ili održivost. Isto se može dogoditi s našim prethodnim projektima koje smo napisali kada smo imali mnogo manje iskustva u programiranju.
U drugim slučajevima ciljevi inače velikog projekta s vremenom se mijenjaju, i moramo odredite prioritete drugih stvari u aplikaciji nego prije.
Govorimo o refactoringu kada promijeniti (očistiti) postojeći kod kako bi ga optimizirali bez mijenjanja bilo koje njegove funkcionalnosti. Refactoring treba izvesti s velikom pažnjom, kao da je učinjeno na pogrešan način, lako možemo završiti s bazom koda koja je još manje optimalna od izvorne..
Srećom, u našim rukama imamo mnogo dobro testiranih tehnika koje mogu učiniti proces refaktoringa glatkim.
6. Izravnije otklanjanje pogrešaka
Ispravljanje pogrešaka zauzima značajan dio radnog tijeka izrade weba i obično je zamoran ili čak zastrašujući zadatak. Dovoljno je teško ako ispravljamo vlastiti kod, ali to je mnogo gore kad moramo pronaći bugove u tuđem, pogotovo ako je to nešto poput beskrajnog špagetskog koda koji koristi samo funkcije.
Pametan dizajn i arhitektonski obrasci, kao što su pomoću objekata i različitih modula, i jasne smjernice za kodiranje može olakšati proces otklanjanja pogrešaka, čak i ako najvjerojatnije još uvijek neće biti naš najdraži zadatak.
7. Poboljšani tijek rada
Mnoge web-razvojne projekte vode distribuirani timovi, kao što su zajednice otvorenog koda ili udaljeni timovi. Jedna od najtežih stvari u upravljanju takvim radnim procesom je pronaći način na koji je komunikacija dovoljno učinkovita omogućiti članovima tima da se lako razumiju, i ne morate stalno raspravljati o zadanim postavkama.
Dogovorene najbolje prakse i stilski vodiči mogu premostiti jaz između ljudi iz različitih sredina, da ne spominjemo uobičajene komunikacijske poteškoće između dizajnerskih i razvojnih timova u većini web projekata.
Optimizacija koda je također optimizacija tijeka rada, kao da članovi tima govore zajedničkim jezikom i dijele iste deklarirane ciljeve, također će moći raditi zajedno bez puno manje muke.
8. Lakše održavanje kodova
Iako je izgradnja nečega iz temelja zabavnija od održavanja već postojećeg koda, ponekad nam je još uvijek potrebno provesti stalno održavanje koda. Rad s već postojećim sustavima također nam može dati nove poglede na optimizaciju koda, jer je to drugačije iskustvo od ranih optimizacija u novom projektu..
U održavanju softvera već smo u fazi u kojoj možemo uhvatiti stvarne probleme s performansama i učinkovitosti, te raditi s pravim korisnicima umjesto hipotetskih slučajeva korištenja.
Održavanje koda obično dobiva malo poštovanja u krugovima razvojnih programera, ali još uvijek može biti zadovoljavajući zadatak ako slijedimo najbolje postupke, kao što je upotreba pouzdana kontrola verzija, upravljanje ovisnošću, platforme za testiranje i testiranje, i ispravno voditi brigu o dokumentaciji.
9. Brži razvoj značajki
Stalna inovacija je srž zadržavanja važnosti u našem polju, kao i ako ne pokažemo ništa novo našim korisnicima uskoro možemo brzo ostaviti za sobom. Proširivanje projekta i dodavanje novih značajki obično je mnogo brže ako radimo s dobro optimiziranom, čistom bazom koda.
Osim već diskutiranih metoda optimizacije koda, razvoj značajki također može dobiti zamah ako budemo u korak moderne metode upravljanja projektima, na primjer, ako koristimo iterativne modele životnog ciklusa umjesto tradicionalnog modela vodopada.
10. Manji tehnički dug
Izraz "tehnički dug" skovao je Ward Cunningham, programer koji je također razvio prvi wiki. Uspoređuje posljedice naših loših programskih odluka koje se tijekom vremena akumuliraju na financijski dug u kojem ljudi plaćaju kamate u budućnosti kako bi brzo dobili novac u sadašnjosti.
Ove manje od optimalne odluke obično se pojavljuju u obliku brzih popravaka, programiranja kopiranja i lijepljenja, tvrdog kodiranja, programiranja za teret robe i drugih kodiranje antipatterns i neuredne radne navike.
To je u osnovi nemoguće je u potpunosti izbjeći tehnički dug, jer čak i dobre odluke mogu biti manje poželjne posljedice u budućnosti, ali ako marljivo optimiziramo naš kod, sigurno ćemo biti mnogo manjeg tehničkog duga.