Сүүлийн үед үр бүтээмжийн талаар л тархиа гашилтал бодох болов. Өөр ч арга алга. Бид цөөхүүлээ, хөгжүүлэлт удаан зогсонги байдалд байна. Гэхдээ заавал хийх ёстой зүйлс гэж бий.

1. Миний хувьд саяханыг хүртэл REUSE буюу дахин ашиглах кодыг сайн бичиж байж урт хугацаандаа өндөр бүтээмжийг бий болгоно гэдэгт итгэж, хийж, хичээсээр ирлээ. ReUse, ReUsable код бичих гэхээр хэн ч байсан тэгж бодно биз дээ? Та ямар ч программ хангамжийн инженерчлэлийн тухай ном эргүүлээд харсан ReUse, Reusable байх ёстой гэсэн үгсийг баттай харах болно.
Би 20 бараг 25 жил код бичсэний дараа ч бүтээмж санасан хэмжээнд хүрсэнгүй. Миний бүтээмж миний туршлагатай л пропорциональ хамааралтай байна. Тиймээс би ReUse бол онцлоод байх шаардлагагүй, цаг идсэн чөтгөрийн дөнгө гэж хэлмээр байна. Учир нь дахин ашиглагдах код бичихийн тулд та олон талаас нь эргэцүүлж, энгийн код бичихээс 5-10 дахин урт хугацаа зарцуулан бодож бичнэ. Хэрвээ та дөнгөж ажлын талбарт орж ирж байгаа 3-с бага жилийн туршлагатай бол бүр их цаг зарцуулна.
Яагаад ReUse нэг л биш вэ?
Жижиглэсэн (fine granular) төвшинд best practices бариад функц, процедур, метод бичиж байхад та тэртэй тэргүй дахин ашиглагдах код бичиж байгаа гэсэн үг. Нэг их бодох шаардлагагүй. Арай гүн бодоод олон параметр дамжуулаад эхэлбэл та тестлэхэд бэрхтэй, заваан код бүхий буруу зам руу халтирч орж байна гэсэн үг. Өөрөөр хэлбэл манай мэргэжлийнхнээр Best practices биш Bad smell хийж эхэлж байна гэсэн үг. Арай томоохон буюу coarse granular төвшинд бол ReUse таныг ёстой нэг янаглан хорлоно доо. Учир нь энэ төвшинд ReUse нь өөрөө буруу хийсвэрлэл болон асар том ээдрээтэй моделиудыг үүсгэхэд хүргэнэ. Active Record pattern бол үүний нэг жишээ. Танд мөн маш нарийн, өндөр чанартай баримтжуулалт хийх шаардлага гарна. Баримтжуулалт бол угаас өндөр өртөгтэй, байнга шинэчилж авч явахад тун хүчир ажил. Та интеграци хийгээд эхэлбэл эсвэл DDD буюу Domain Driven Design, Microservices бичээд эхэлбэл миний юу яриад байгааг (буруу хийсвэрлэл, ээдрээтэй модель) илүү нарийн ойлгоно оо.
За тэгэхээр бид яах ёстой болж байна вэ?
Миний хувьд өөрийн туршлага дээрээ суурилаад зөвлөхөд мэргэжил нэгт анд та бүхэн дахин ашиглалтын оронд SOLID зарчмыг байнга бодож кодоо бичвэл хамаагүй цэвэрхэн архитектуртай, хамаагүй үр дүнтэй код бичих болно. Ялангуяа тэр эхний үсгийн илтгэж байгаа (S)-Single Responsibility principle бол ойлгоход амар бичихэд ч хялбар зарчим. TDD-Test Driven Development барих нь хэзээ ч буруудахгүй.

2. Бид объект хандалтат технологи бол маш их цаг хэмнэдэг гэж ойлгодог. Мөн манай мэргэжилийн ном судрууд дээр ч тэгж сургадаг. Үнэндээ та C болон Java дээр нэгэн ижил кодыг бичихэд 4-5 дахин бага хугацааг Жава дээр зарцуулна. Гэхдээ та C++ дээр объект хандалтат код бичээд Python дээр процедур хандалтат код бичээд харьцуулаад үз л дээ. Python дээр та бичвэл 4-5 дахин хурдан бичнэ. Тэгэхээр тэр цаг хэмнэлт, үр бүтээмж бол Объект хандалтат технолгиос орж ирээд байгаа зүйл биш юм. За тэгээд flow програмчлал, функциональ програмчлалын clojure функцүүдээс эхлээд айхтар бүтээмжтэй технологиуд багагүй бий. Энэ мэтчилэн эргэцүүлбэл:
Харин санах ойн автомат удирдлага л бидэнд өндөр бүтээмжийг өгч байгаа юм. Өнөө garbage collector энээ тэрээ чинь гэсэн үг. Нөгөө талаас объект хандалтат програмчлалыг буруу ойлгож, хийдэг нь зөв хийдэг программистаасаа олон шүү. Бүр доод түвшинд хурд, хүчин чадал шаардлагатай программ бичье гэвэл С/C++ ашиглаж өөрөө санах ойгоо удирдахаас өөр аврал байхгүй.
Надтай санал нийлэхгүй олон хүн гарч ирэх байх аа. Гэхдээ та бүхэн өнөөдөр биш ч хэзээ нэгэн цагт ойлгоно.
Үзэж харж, судалсан номыг нь шүүмжлэхэд ямар сайхан байхав, надад ч асуудлыг сөргүүлж тавих амар байсангүй, зүрхэлж хэлж чадахгүй олон жил явлаа. Гэхдээ үнэхээр ингэж бичихээс өөр арга байсангүй ээ.

Аахен, 2018


3 Comments

Батсайхан · 2018/09/29 at 21:40

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

Гантулга · 2018/09/30 at 12:26

Санал нийлж байнаа. Reusable бичих гэж хугацаа их алддаг
Гэвч дахин ашиглаж байсан нь маш цөөн.

Б.Болд-Эрдэнэ · 2018/10/03 at 18:08

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

Бараг бүх юманд ашиглагдаг кодоо ер нь 1 санд хийгээд тэрийгээ л хөгжүүлээд явдаг.

Leave a Reply

Your email address will not be published. Required fields are marked *