Дөңгөлөктү кайра ойлоп табуу эмне үчүн пайдалуу?

Дөңгөлөктү кайра ойлоп табуу эмне үчүн пайдалуу?

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

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

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

Иштеп чыгуучулар даяр кодду өзүнөн өзү айкын деп эсептешет

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

Адатта, ал иштейт, бирок баары татаал болуп калганда, механиканы түшүнүү жакшы натыйжа берет.

Ошентип, улук иштеп чыгуучунун кызматына биздин талапкер убада объектилерин өзүнөн өзү түшүнүктүү деп эсептейт. Ал, балким, башка бирөөнүн кодексинин бир жеринде пайда болгондо, алар менен кантип күрөшүү керек экенин түшүнгөн, бирок ал жалпы принципти түшүнгөн эмес жана интервью учурунда аны кайталай алган эмес. Балким, ал үзүндүнү жатка эстеп калгандыр - бул анчалык деле кыйын эмес:

return new Promise((resolve, reject) => {
  functionWithCallback((err, result) => {
   return err ? reject(err) : resolve(result);
  });
});

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

Тамырына кайтуу

2012-жылы, фронттук алкактардын үстөмдүгү орной элек кезде, jQuery дүйнөнү башкарып турган, мен китепти окудум. JavaScript Ninja сырлары, автору Джон Ресиг, jQuery түзүүчүсү.

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

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

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

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

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

Мен алгач убадалар менен иштей баштаганда, бул мага таза сыйкырдай сезилди. Анан мен алар ошол эле кайра чалууларга негизделгенин билдим жана менин программалоо дүйнөм тескери бурулду. Демек, максаты бизди кайра чалуулардан куткаруу болгон үлгү кайра чалуулар аркылуу ишке ашканбы?!

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

Бул дөңгөлөктү кайра ойлоп табыңыз

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

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

Source: www.habr.com

Комментарий кошуу