10 разлога зашто вам је потребна оптимизација кода
Док пишемо код, ми стално доносимо одлуке и бирамо између решења која могу изгледати еквивалентна у почетку. Касније се обично испостави да неки избори резултирају ефикаснијим програмом од других, тако да потрага за најбољим праксама кодирања и техникама оптимизације природно настаје, и ми почињемо видети цео процес развоја као решење за оптимизацију.
Иако се проблеми оптимизације не баве само онима који се редовно баве, на примјер, постоје проблеми у рјешавању и тражење проблема, оптимизација је задатак који обухваћа различите фазе развоја веба, вјеројатно највише.
Оптимизација кода се може догодити на различитим нивоима, у зависности од тога колико је оптимизација коју спроводимо до стројног кода. У веб развоју можемо само да вршимо оптимизацију на вишем нивоу, будући да оптимизација на нивоу скупштине или времена извршавања за нас није опција, али још увек имамо много могућности.
Можемо оптимизирати наш код на архитектонском нивоу са паметни дизајн узорци, на нивоу изворног кода коришћењем најбољих пракси кодирања и коришћењем одговарајућих алата, а такође можемо побољшати перформансе нашег тима увођење водича за стил кодирања у наш радни процес.
Какву год технику да изаберемо, постоји правило које сваки следбеник оптимизације кода треба да прати: увек морамо извршити оптимизацију на начин који не мијења значење кода.
Предности оптимизације кода расту у складу са растом нашег пројекта, као и чак и иницијално мали пројекти могу временом постати велики, стицање солидних вештина оптимизације кода скоро увек има мерљиве позитивне резултате.
1. База чисте шифре
Као пројекат сазријева, и све више и више програмера почиње да ради на томе, дуплирања и преклапања се обично појављују раније или касније, и одједном схватамо да једва да схватамо шта се догађа.
Није случајно то што је одржавање ДРИ (не понављати) принципа на уму један од темеља ефикасног развоја софтвера. Добро припремљена, пажљиво оптимизована база кодова у којој смо у могућности поново користити исте елементе више пута увек је слеекер и уреднији, па је зато много лакше разумети и радити.
2. Виша конзистентност
Конзистентност је као кућни послови, када је правилно збринута, нико то не примећује, али када је запостављен, цело место изгледа неуредно, а ми се налазимо у хаосу.
Постизање потпуне конзистентности је тешко, као осигуравање компатибилности с временом може довести до побољшања, али обраћамо пажњу користећи кохерентне смернице за кодексе, компатибилне АПИ-је и конзистентне стандарде сигурно може смањити бол.
Одржавање доследности кода је посебно важно када треба да се позабавимо старим кодом, или у случајевима већих пројеката укључују многе програмере.
3. Брже локације
Оптимизацијски код сличан је куповини бржег аутомобила. Као резултат, наш код извршава се брже, и наш сајт или апликација троши мање меморије него пре. Иако је процес оптимизације може захтијевати додатно вријеме и новац, резултат је а боље искуство, не само за програмере, већ и за крајње кориснике.
Бржи код подразумева краћа времена учитавања странице такође, што је велика ствар у оба света у оптимизацији претраживача и конверзијском маркетингу. Истраживање то каже “скоро половина корисника веб-а очекује да ће се сајт учитати за 2 секунде или мање, и обично напуштају сајт који није учитан у року од 3 секунде”, тако да брзина очигледно није област коју можемо безбедно да игноришемо.
4. Боља читљивост кода
Читљивост је важан аспект одрживости кода. Неуредан код са ад хоц форматирањем је тешко читати, стога је тешко разумљив, посебно за програмере који су нови у пројекту.
Можемо се заштитити бол која се бави нејасним кодом ако применимо одређене технике оптимизације кода, као што су:
- користећи кохерентне конвенције именовања са смисленим именима, као што је БЕМ
- доследно форматирање са логичким коришћењем удубљења, размака и вертикалног размака
- избегавање непотребне буке, као што су очигледни коментари
То је разлог зашто велики пројекти, као што су ВордПресс, јКуери и Моотоолс, имају јасне смернице за стил кодирања које сваки укључени програмер треба да прати.
5. Ефикасније рефакторисање
Често се дешава у веб развоју да наслеђујемо код од неког другог и брзо схватамо да јесте далеко од тога да буде оптималан, било у смислу структуру, перформансе или одрживост. Исто се може догодити и са нашим претходним пројектима које смо написали када смо имали много мање искуства у програмирању.
У другим случајевима циљеви иначе великог пројекта се временом мењају, и морамо одредите приоритете других ствари у апликацији него пре.
Ми говоримо о рефакторингу када ми променити (очистити) постојећи код да би се оптимизовала без промене било које функционалности. Рефакторисање треба извршити с великом пажњом, као да се ради на погрешан начин, лако можемо завршити са базом кода која је још мање оптимална од оригиналне..
Срећом, имамо много добро тестираних техника које могу учинити процес рефакторинга глатким.
6. Још једноставнији дебуггинг
Отклањање грешака заузима значајан део тока веб развоја, и обично је напоран или чак застрашујући задатак. Довољно је тешко ако морамо да исправимо свој код, али то је много горе кад треба да нађемо грешке у туђем, поготово ако је то нешто попут бескрајног шпагетског кода који користи ништа осим функција.
Смарт десигн и архитектонски обрасци, као такав усинг објецтс и различитих модула, и јасне смернице за кодирање може олакшати процес отклањања грешака, чак и ако највјероватније још увијек неће бити наш најдражи задатак.
7. Побољшани радни ток
Многе веб развојне пројекте воде дистрибуирани тимови, као што су заједнице отвореног кода или удаљени тимови. Једна од најтежих ствари у управљању таквим радним процесом је пронаћи начин на који комуникација чини довољно ефикасном омогућити члановима тима да се лако разумију, и да не морате стално расправљати о пропустима.
Договорени најбољи поступци и стилски водичи могу премостити јаз између људи из различитих средина, да не спомињемо уобичајене комуникацијске потешкоће између дизајнерских и развојних тимова у већини веб пројеката.
Оптимизација кода је такође оптимизација рада, као да чланови тима говоре заједничким језиком и деле исте декларисане циљеве, такође ће бити у могућности да раде заједно без много мање муке.
8. Лакше одржавање кодова
Иако је изградња нечега из темеља забавнија од одржавања већ постојећег кода, понекад нам је потребно да наставимо са одржавањем кода. Рад са већ постојећим системима такође може да нам да нове погледе на оптимизацију кода, јер је то другачије искуство од раних оптимизација у новом пројекту..
У одржавању софтвера, већ смо у фази у којој можемо ухватити стварне проблеме у погледу перформанси и ефикасности, и радити са стварним корисницима умјесто хипотетичких случајева употребе.
Одржавање кода обично добија мало поштовања у круговима програмера, али и даље може бити користан задатак ако пратимо најбоље праксе, као што је употреба поуздана контрола верзија, управљање зависношћу, платформе за тестирање и тестирање, и исправно водите рачуна о документацији.
9. Бржи развој карактеристика
Стална иновација је језгро останка релевантног у нашој области, као у случају да нисмо показали ништа ново нашим корисницима ускоро можемо брзо бити остављени. Проширење пројекта и додавање нових функција је обично много брже ако радимо са добро оптимизираном, чистом базом кода.
Осим већ дискутованих метода оптимизације кода, развој карактеристика такође може добити замах ако будемо пратили модерне методе управљања пројектима, на пример, ако користимо итеративне моделе животног циклуса уместо традиционалног модела водопада.
10. Мањи технички дуг
Термин "технички дуг" сковао је Вард Цуннингхам, програмер који је такође развио први вики. Она пореди последице наших лоших програмских одлука које се акумулирају током времена до финансијског дуга у којем људи плаћају камату у будућности како би брзо добили новац у садашњости.
Ове мање-више-оптималне одлуке се обично манифестују у виду брзих поправки, копирања и лепљења програмирања, тврдог кодирања, програмирања за култове терета и других кодирање антипаттернс и неуредне радне навике.
То је у основи немогуће је потпуно избећи технички дуг, јер чак и добре одлуке могу бити мање пожељне посљедице у будућности, али ако марљиво оптимизирамо наш код, сигурно ћемо бити много мањег техничког дуга.