Дугуйг дахин зохион бүтээх нь яагаад ашигтай вэ?

Дугуйг дахин зохион бүтээх нь яагаад ашигтай вэ?

Нөгөө өдөр би ахлах албан тушаалд өргөдөл гаргаж байсан JavaScript хөгжүүлэгчтэй ярилцлага хийсэн. Ярилцлагад мөн оролцож байсан хамтран зүтгэгч нь нэр дэвшигчээс HTTP хүсэлт гаргах функц бичихийг хүссэн бөгөөд амжилтгүй бол хэд хэдэн удаа оролдоно.

Тэр кодыг шууд самбар дээр бичсэн тул ойролцоогоор ямар нэг зүйлийг зурахад хангалттай байх болно. Хэрэв тэр зүгээр л асуудал юу болохыг сайн ойлгосон гэдгээ харуулсан бол бид үнэхээр сэтгэл хангалуун байх байсан. Гэвч харамсалтай нь тэрээр амжилттай шийдлийг олж чадаагүй юм. Дараа нь бид сэтгэл хөдөлж, даалгаврыг бага зэрэг хөнгөвчлөхөөр шийдэж, түүнээс дахин дуудлага хийх функцийг амлалт дээр суурилсан функц болгон хувиргахыг түүнээс хүсэв.

Гэхдээ харамсалтай. Тийм ээ, тэр өмнө нь ийм кодтой таарч байсан нь илт байсан. Тэр тэнд бүх зүйл хэрхэн ажилладагийг ерөнхийд нь мэддэг байсан. Бидэнд хэрэгтэй зүйл бол үзэл баримтлалын талаархи ойлголтыг харуулсан шийдлийн ноорог юм. Гэтэл нэр дэвшигчийн самбар дээр бичсэн код нь шал дэмий зүйл байв. Тэр JavaScript-д ямар амлалтууд байдгийг маш бүдэг бадаг төсөөлж байсан бөгөөд тэдгээр нь яагаад хэрэгтэй байгааг тайлбарлаж чадахгүй байв. Бага ангийн хувьд энэ нь уучлагдах байсан ч ахлах хүний ​​албан тушаалд тохирохгүй болсон. Энэ хөгжүүлэгч амлалтын нарийн гинжин хэлхээний алдааг хэрхэн засч, яг юу хийснээ бусдад тайлбарлаж чадах вэ?

Хөгжүүлэгчид бэлэн кодыг өөрөө ойлгомжтой гэж үздэг

Хөгжүүлэлтийн явцад бид дахин давтагдах материалтай байнга тулгардаг. Бид кодын хэсгүүдийг шилжүүлдэг бөгөөд ингэснээр бид тэдгээрийг бүрт дахин бичих шаардлагагүй болно. Үүний дагуу бид бүх анхаарлаа гол хэсгүүдэд төвлөрүүлснээр бид хамтран ажиллаж байгаа бэлэн кодыг тодорхой зүйл гэж хардаг - бид зүгээр л бүх зүйл байх ёстой шигээ ажиллах болно гэж үздэг.

Ихэнхдээ энэ нь үр дүнтэй байдаг, гэхдээ бүх зүйл хэцүү үед механикийг ойлгох нь үр өгөөжөө өгдөг.

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

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

Би ч гэсэн үүнийг хийсэн - магадгүй бид бүгд үүнийг хэзээ нэгэн цагт хийсэн байх. Тэд зүгээр л нэг кодыг цээжилснээр дараа нь үүнийг ажилдаа ашиглахын тулд тэнд бүх зүйл хэрхэн ажилладаг талаар ерөнхий ойлголттой байсан. Гэхдээ хэрэв хөгжүүлэгч энэ ойлголтыг үнэхээр ойлгосон бол тэр юу ч санах шаардлагагүй болно - тэр зүгээр л үүнийг хэрхэн хийхийг мэддэг бөгөөд кодонд хэрэгтэй бүх зүйлийг хялбархан хуулбарлах болно.

Үндэс рүүгээ буцна уу

2012 онд, урд талын хүрээний ноёрхол хараахан тогтоогдоогүй байхад jQuery дэлхийг захирч байсан бөгөөд би энэ номыг уншсан. JavaScript нинжагийн нууцууд, jQuery-г бүтээгч Жон Ресиг бичсэн.

Энэхүү ном нь уншигчдад өөрийн jQuery-г эхнээс нь хэрхэн бүтээхийг зааж, номын санг бий болгоход хүргэсэн сэтгэлгээний үйл явцын талаар өвөрмөц ойлголтыг өгдөг. Сүүлийн жилүүдэд jQuery хуучин нэр хүндээ алдсан ч би энэ номыг маш их санал болгож байна. Түүний надад хамгийн их анхаарал татсан зүйл бол би өөрөө энэ бүхнийг бодож болох байсан гэсэн тууштай мэдрэмж байв. Зохиогчийн тайлбарласан алхмууд нь маш логиктой, маш ойлгомжтой мэт санагдсан тул би үүнийг хийхэд л би jQuery-г хялбархан үүсгэж чадна гэж нухацтай бодож эхэлсэн.

Мэдээжийн хэрэг, бодит байдал дээр би ийм зүйл хийж чадахгүй байх байсан - би үүнийг тэвчихийн аргагүй хэцүү гэж шийдсэн. Миний өөрийн шийдэл нь ажиллахад хэтэрхий энгийн бөгөөд гэнэн мэт санагдаж, би бууж өгөх болно. Би jQuery-г зөв үйл ажиллагаанд нь сохроор итгэх хэрэгтэй болох нь ойлгомжтой зүйл гэж ангилах болно. Дараа нь би энэ номын сангийн механикийг судлахад цаг хугацаа алдахгүй, харин үүнийг зүгээр л хар хайрцаг болгон ашиглах болно.

Гэхдээ энэ номыг уншсанаар өөр хүн болсон. Би эх кодыг уншиж эхэлсэн бөгөөд олон шийдлүүдийн хэрэгжилт нь үнэн хэрэгтээ маш ил тод, бүр ойлгомжтой байсныг олж мэдсэн. Үгүй, мэдээжийн хэрэг, ийм зүйлийг ганцаараа бодох нь өөр түүх юм. Гэхдээ энэ нь бусдын кодыг судалж, одоо байгаа шийдлүүдийг хуулбарлаж байгаа нь бидэнд өөрсдийн гэсэн зүйлийг гаргахад тусалдаг.

Таны олж авсан урам зориг, анзаарч эхэлсэн хэв маяг таныг хөгжүүлэгчийн хувьд өөрчлөх болно. Таны байнга ашигладаг, ид шидийн олдвор гэж бодож дассан тэр гайхамшигт номын сан нь ид шид дээр огт ажилладаггүй, зүгээр л нэг асуудлыг товч бөгөөд авхаалжтай шийддэг гэдгийг та олж мэдэх болно.

Заримдаа та кодыг сайтар судалж, алхам алхмаар дүн шинжилгээ хийх хэрэгтэй болно, гэхдээ ийм байдлаар та жижиг, тууштай алхамаар хөдөлж, шийдэлд хүрэх зохиогчийн замыг давтаж болно. Энэ нь танд кодлох үйл явц руу илүү гүнзгий нэвтэрч, өөрийн шийдлийг олоход илүү итгэлтэй байх боломжийг олгоно.

Анх амлалттай ажиллаж эхлэхэд энэ нь надад цэвэр ид шид мэт санагдаж байсан. Дараа нь би тэдгээр нь ижил дуудлага дээр үндэслэсэн болохыг олж мэдсэн бөгөөд миний програмчлалын ертөнц орвонгоороо эргэв. Тэгэхээр биднийг буцаан дуудлагаас аврах зорилготой загвар нь өөрөө буцаан дуудлагыг ашиглан хэрэгжиж байна уу?!

Энэ нь надад асуудлыг өөр нүдээр харахад тусалсан бөгөөд энэ бол миний амьдралдаа хэзээ ч ойлгогдохооргүй нарийн төвөгтэй код биш гэдгийг ойлгоход тусалсан. Эдгээр нь зүгээр л сониуч зан, гүн гүнзгий дүрэлзэх замаар асуудалгүйгээр ойлгож болох хэв маяг юм. Ингэж хүмүүс кодлож сурч, хөгжүүлэгч болж өсдөг.

Энэ дугуйг дахин зохион бүтээ

Тиймээс, дугуйгаа дахин зохион бүтээгээрэй: өөрийн өгөгдөлд холбох кодыг бичээрэй, өөрийн гэсэн амлалтыг бий болго, эсвэл бүр өөрийн улсын удирдлагын шийдлийг гарга.
Энэ бүгдийг хэн ч ашиглахгүй байх нь хамаагүй, гэхдээ одоо та үүнийг хэрхэн хийхээ мэддэг болсон. Хэрэв танд ийм бүтээн байгуулалтыг өөрийн төсөлдөө ашиглах боломж байгаа бол энэ нь ерөнхийдөө гайхалтай юм. Та тэдгээрийг хөгжүүлж, өөр зүйл сурах боломжтой болно.

Энд гол зүйл бол кодоо үйлдвэрлэл рүү илгээх биш, харин шинэ зүйл сурах явдал юм. Одоо байгаа шийдлийнхээ хэрэгжилтийг бичих нь шилдэг программистуудаас суралцаж, ур чадвараа дээшлүүлэх сайхан арга юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх