Кодекске көз карандылык - бул шайтан.

Көз карандылыгыңыз ар дайым күйүп турат.
"Өзгөртүү - бир гана туруктуу ..." - Гераклит (Философ)

Бүгүнкү күндө веб-тиркемелерибизди куруу үчүн биз колдонгон куралдар, китепканалар жана алкактар ​​бир нече жыл мурун колдонулган куралдардан кескин айырмаланат.

Бир нече кыска жылдан кийин, ушул технологиялардын көпчүлүгү кайрадан кескин өзгөрөт. Ошентсе да, биздин көпчүлүгү бул колдонмолордун борбордук, ажырагыс бөлүгү.

Биз ай сайын жасалган лаззат алкактарын түбөлүккө өзгөрүлбөйбүз деп импорттойбуз, колдонобуз жана мураска алабыз. Мейли ... алар эмес. Жана бул көйгөй.

20 жаштан жогору иштеп, веб-тиркемелерди иштеп чыккан жана архивдегенден кийин, мен эки маанилүү чындыкты түшүндүм:

  1. Тышкы көз карандылыктар узак мөөнөттүү туруктуулукка жана каалаган тиркемелердин жарамдуулугуна чоң коркунуч келтирет.
  2. Тышкы көз карандылыкты колдонбостон, тривиалдык эмес колдонмону куруу барган сайын татаалдашууда.

Бул макала ушул эки чындыкты бири-бирине шайкеш келтирип, биздин колдонмолордо узак мөөнөттүү жашоо мүмкүнчүлүгүнө ээ болушат.

Коёндун тешиги чындыгында абдан терең.

Эгер биз веб-тиркемелерибиздин бардык нерселер жөнүндө ой жүгүртүп баштасак, кодго жетээрден мурун ондогон же андан көп нерселер жөнүндө ойлонуп көрөбүз:

  • кубат
  • Байланыш
  • Firewall
  • DNS
  • Сервер жабдыгы (CPU, Disk, Ram,…)
  • муздатуу
  • Виртуалдаштыруу платформасы
  • Контейнер платформасы
  • Иштетүү системасы
  • Веб-сервердин платформасы
  • Колдонмо серверинин платформасы
  • Веб-браузер

Иштеп чыгуучулар катары буларды билишибиз керек, бирок алар жөнүндө көп нерсе жасай албайбыз. Ошентип, азыр аларды этибарга албай, код жөнүндө гана сүйлөшөлү.

Коддо, көз карандылыктын үч түрү бар:

1. Көз карандылыктарды биз көзөмөлдөйбүз

Бул код жазылган жана биз же биздин уюмга таандык.

2. Көз карандылыктар биз көзөмөлдөбөйт

Бул үчүнчү жактын сатуучусу же ачык булактуу программалык жамаат тарабынан жазылган код.

3. Көз карандылыктар алынып салынгандан кийин

Булар биздин үчүнчү жактын коддон көзкаранды болгон коддон көз карандылык. (Айтпаңыз, үч эсе тез!)

Көбүнчө биз көзөмөлдөбөгөн көз карандылыктар жөнүндө сүйлөшөбүз.

Биз көзөмөлдөгөн жана көз карандылыктан биротоло арылтылган көз карандылыктар дагы деле баштын оорушуна алып келиши мүмкүн, бирок биз башкарып жаткан көз карандылыктар болсо, биз түздөн-түз кийлигишип, көйгөйлөрдү жумшартууга мүмкүнчүлүк беришибиз керек.

Көз карандылыктар бир жолу четтетилгенде, биз, адатта, биз үчүн кам көрө турган үчүнчү жакка ишенсек болот, анткени алар да ушул нерселерден көз каранды.

Үчүнчү жактын кодуна көз карандылык эмне үчүн жакшы

Веб-тиркемеңиздин көп бөлүгү жалпы көйгөйлөрдү чечүү үчүн бар: аутентификация, авторизация, маалыматка жетүү, каталар менен иштөө, навигация, каттоо, шифрлөө, элементтердин тизмесин көрсөтүү, форма киргизүүлөрүн текшерүү жана башкалар ...

Кайсы технологиялык стаканы колдонбосоңуз да, бул көйгөйлөрдү чечүүнүн жалпы мүмкүнчүлүктөрү бар жана сиз оңой эле китепканаңызга кирип, туташтырылган китепканалар катары иштей аласыз. Бул нерселердин бардыгын толугу менен нөлдөн баштап жазуу, негизинен, убакытты текке кетирүү болуп саналат.

Сиз сейрек кездешүүчү көйгөйдү же жалпы көйгөйдү жөнөкөй жол менен чече турган кодго токтолгуңуз келет. Мына ушул нерсе сиздин колдонмоңузду баалуу кылат: жеке колдонмоңузга гана тиешелүү бизнес эрежелерин ишке ашыруучу код - "жашыруун соус".

Google'дун издөө жана баракчалардын рейтинги боюнча алгоритм, Facebook'тун убакыт тилкесин чыпкалоо, Netflixтин "сизге сунушталган" бөлүмү жана маалыматтарды кысуу алгоритмдери - ушул функциялардын бардыгынын коду "жашыруун соус".

Үчүнчү жактын коду - китепканалар түрүндө - бул колдонмоңуздун ошол өзгөчөлүктөрүн тез арада ишке ашырууга мүмкүнчүлүк берет, андыктан "жашыруун соуска" көңүл топтой аласыз.

Үчүнчү жактын кодуна көз карандылык эмне үчүн жаман

Акыркы эки жыл ичинде курулган тривиалдык эмес веб-тиркемелерди карап көрүңүз, чындыгында, үчүнчү жактын китепканасынан келген коддун көлөмүнө таң каласыз. Үчүнчү жактын китепканаларынын бирөөсү же бир нечеси кескин өзгөрүп, жоголуп же сынып калсачы?

Эгер ал ачык булак болсо, анда аны өзүңүз чечсеңиз болот. Бирок сизде жок болгон китепкананын кодун канчалык деңгээлде түшүнүп жатасыз? Биринчи кезекте китепкананы пайдалангандыгыңыздын чоң себеби, бардык майда-чүйдө нерселерди ойлонбостон коддун артыкчылыктарын алуу. Эми сен тыгылып калдың. Сиз өзүңүз ээ болбогон жана көзөмөлдөбөгөн ушул көз карандылыктарга өзүңүздүн байлыгыңызды толугу менен байлап койдуңуз.

Кабатыр болбоңуз, ушул макаланын аягында сиз жаңы үмүт таба аласыз.

Балким, мен апыртылып же академиялык көз караш менен сүйлөп жатам деп ойлойсуз. Ишендире кетейин - менин кардарларымдын ондогон мисалдары бар, алар үчүнчү жактын кодун өз колдонмолоруна тыкан киргизип алышкан. Бул жакында бир гана мисал ...

Менин мурунку кардарым Facebook'та Parse деп аталган Backend-as-a-Service провайдеринин жардамы менен өз колдонмосун курушкан. Parse кызматын керектөө үчүн алар Parse берген JavaScript кардарлар китепканасын колдонушту. Бул процессте алар өздөрүнүн бардык коддорун, анын ичинде “жашыруун соус” кодун да ушул китепканага бекем кошушту.

Менин кардарым алгачкы өнүмүн ишке киргизгенден үч ай өткөндөн кийин, алар чыныгы, төлөөчү кардарлар менен жакшы мамилелерди баштаганга чейин - Parse анын жабылып калгандыгын жарыялады.

Эми менин продуктума көңүл буруп, кардарлар базасын көбөйтүүнүн ордуна, менин кардарым Parse'нин өз алдынча хостингге алынган, ачык булактуу версиясына өтүү керекпи же Parse'ни толугу менен алмаштырса болобу.

Жаңы иштелип чыккан тиркеменин иштен чыгышы ушунчалык чоң болгондуктан, менин кардарым колдонмону толугу менен сыйрып алды.

Жакшы менен жаманды тең салмактуу кылуу

Бир нече жыл мурун, үчүнчү жактын китепканаларынын артыкчылыктарын сактап калуу менен, тобокелдиктерди жеңүү үчүн адаптер үлгүсүн колдонуп, аларды ороп салуу керек болчу.

Чындыгында, сиз үчүнчү тараптын кодун сиз жазган адаптер классына же модулуна оросуз. Бул андан кийин үчүнчү тараптын китепканаларынын функцияларын сиз көзөмөлдөгөн ыкма менен ачып берет.

Үчүнчү жактын китепканасы же алкагы өзгөрүлүп же кетип жатса, ушул үлгү менен адаптер кодун бир аз оңдой беришиңиз керек. Колдонмоңуздун калган бөлүгү сакталып турат.

Dofactory.com сайтынан адаптер үлгүсүнүн диаграммасы

Бул кагазда жакшы угулат. Бир нече гана функцияны камсыз кылган өз алдынча көз карандылыктарыңыз болгондо, ал амалды жасайт. Бирок баары тез эле жийиркенип кетиши мүмкүн.

React китепканасын (анын ичинде JSX) бирөөсүн колдонуудан мурун, аны толугу менен ороп салыш керекпи? JQuery, же Angular же Java тилиндеги жаздык алкактарды ороп салуу жөнүндө эмне айтууга болот? Бул тез эле үрөй учурарлык абалга келет.

Ушул күндөрү мен дагы бир нюансылык мамилени сунуш кылам ...

Сиздин код базаңызга кошууну көздөгөн ар бир көз карандылык үчүн, эки факторду көбөйтүү менен, анын тобокелдик деңгээлин баалаңыз:

  1. Көзкарандылыктын материалдык жол менен өзгөрүшү ыктымалдыгы.
  2. Көз карандылыкка байланыштуу өзгөргөн материалдык зыяндын өлчөмү колдонмоңузга кандай зыян келтирет.

Үчүнчү жактын китепканасы же алкагы төмөндөгү нерселердин бардыгы же бардыгы чындык болгондо өзгөрбөйт:

  • Бул бир нече жылдан бери болуп келет жана бир нече ири чыгарылыштарга ээ болду.
  • Ал көптөгөн коммерциялык тиркемелер тарабынан кеңири колдонулат.
  • Бул чоң уюмдун жигердүү колдоосуна ээ - артыкчылыкка ээ болгон компания же мекеме.

Үчүнчү жактын китепканасы же алкагы төмөнкү нерселердин айрымдары же бардыгы чын болсо, колдонмоңузга азыраак зыян келтирет:

  • Аны бүткүл колдонулгандан көрө, колдонмоңуздун кичинекей бөлүгү гана колдонот.
  • Ага байланыштуу код, мен мурда айткан "жашыруун соустун" бөлүгү эмес.
  • Аны жок кылуу үчүн, сиздин код базаңызга минималдык өзгөртүүлөр киргизилет.
  • Сиздин колдонмоңуз өтө эле кичинекей жана тез эле кайра жазылышы мүмкүн. (Ушундан этият болгула - бул өтө сейрек кездешет).

Кандайдыр бир коркунучтуу нерсе болсо, аны ороп-жыйнап же таптакыр оолак болуу керек.

Колдонмоңуздун баалуулук сунуштоосунда чындыгында борбор болгон код жөнүндө сөз болгондо - "жашыруун соус" - сиз аны абдан коргошуңуз керек. Бул кодду мүмкүн болушунча көзкарандысыз кылыңыз. Эгер сиз көз-карандылыкты колдонушуңуз керек болсо, анда аны түз эле шилтеме кылбай эле, ийне сайып көрүңүз. Ошентсе да сак бол.

Кээде бул үчүнчү жактын китепканасына "жок" деп айтуу чындыгында эле сонун экен, же чындыгында кандайдыр бир себептер менен же башка себептер менен колдонууну каалайсыз. Кайраттуу бол. Мага ишен, ал актайт. Angular компаниясынын биринчи чыгарылышына көп каражат жумшаган адамдардан же Parse бардык жерде колдонгон мурунку кардарымдан сураңыз. Эч кызыктуу эмес. Мага ишен.

Көңүл айтуу жөнүндө сүйлөп жатып, буга көз чаптырыңыз ...

TinyTag изилдөөчүсүнө көз карандылык диаграммасы

Жогорудагы сүрөт TinyTag Explorer аттуу тиркеменин көз карандылык графиги.

Учурдагы колдонмолоруңузга көз карандылык диаграммасын түзүү, көз карандылыгыңыз тарабынан киргизилген тобокелдик деңгээлин түшүнүүнүн мыкты жолу. Жогорудагыга окшош графиктерди түзүү үчүн акысыз курал-жарактардын тизмесин ар кандай тилдерде, анын ичинде JavaScript, C #, Java, PHP жана Python-го чогулттум. Сиз бул жерден ала аласыз.

Башкаларга жардам берчи

Мен өзүмдүн билимимди жана тажрыйбамды алар менен бөлүшүп, мүмкүн болушунча көптөгөн иштеп чыгуучуларга жардам бергим келет. Төмөндөгү ❤ сунуштоо баскычын (жашыл жүрөк) чыкылдатып, мага жардам бериңиз.

Акыры, ушул жерден акысыз көз карандылык графикалык генераторлорунун тизмесин алууну унутпаңыз.