Batzorigt Rentsen
Oct 25, 2018 · 3 min read

Бүтээмж

Японд ирээд удаагүй байсан юм даг. Энэ явдал одоогоос (2013.11.11) 7 орчим жилийн өмнө болжээ.

Нэг удаа Японы асар том даатгалын компанийн системийн хөгжүүлэлтэнд оролцох завшаан тохиолдсон юм. Хөгжүүлэлтийн эхнээс нь оролцсон бөгөөд манай баг гэхэд л 20 орчим хүнээс бүрдэх нүсэр том төсөл байлаа.

Дэлгэцийн зохиомжийг багийн гишүүд бүгд хийхээр болов оо. Асуудлын гол нь хэрэгцээ шаардлагыг бүрэн тодорхойлж дуусаагүй байв. Дэлгэц бүр 100–500 оруулах талбар (textbox, text area, combobox г.м)-тай агаад талбар бүрийн хувьд тухайн талбарын нэр (論理名: logical name, 物理名: physical name), оруулах өгөгдлийн төрөл, өгөгдлийн хэмжээ гэх мэтийг нэг бүрчлэн excel фаилд шивж оруулах ажил байлаа. Ганцхан удаа хийнэ гэвэл ч асуудал байсангүй. Төслийн явцад 4–5 удаа өгөгдлийн төрөл, талбарын нэр өөрчлөгдөх нь энүүхэнд. Үүгээр зогсохгүй энэ зохиомжоос гүйцэтгэл (программчлах) хийнэ. Гүйцэтгэл хийхэд дараах кодыг бичих ёстой байлаа.

  • Дэлгэц (user-page.jsp)
  • Form Class — Java Bean гэгдэх класс (UserInfoForm.java)
  • Дэлгэцнээс оруулсан өгөгдлийг шалгах тохиргоо: apache commons validator-н тохиргоо (user-info-validator.xml)
  • Бизнес логик буюу процессор класс (UserInfoProcessor.java)

Япончууд дуулгавартай, хичээнгүй юм болохоор юу ч бодолгүй өөрчлөгдөх бүрт залхуугүй засаад, дээрх үйлдлийг давтаад л … Би 2 удаа нэлээд тэвчээр гарган хийж үзлээ. Гурав дахиас нь дахиад хэдэн ч удаа өөрчлөгдөө билээ? Ерөөсөө VBA ашиглаад макро биччихвэл зохиомж өөрчлөгдөх бүрт jsp-ээс бусад кодыг автоматаар үүсгэж болох юм гэж бодлоо.

VBA мэдэхгүй тул жаал интернэт ухаад хагас өдөр оролдсоны эцэст ямар ч байсан бүгдийг нь генерацладаг болголоо. Гэхдээ япон үсэгтэй болоод ирэхээр үсэг нь танигдахаа байчихаад байлаа. Фаилаас унших, фаил руу бичих үед үсгийн кодыг зааж өгөөгүйгээс болсон нь тэр. Манай төсөлд VBA-д нэвтэрхий япон байсан тул түүнээс үсгийн кодыг хэрхэн зааж өгөх талаар жишээ программ авч макрогоо заслаа. Ингэж би амьдралдаа анх удаа source code generator хийж билээ.

Үүнээс хойш төсөл өрнөхийн хэрээр олон ч хүн шинээр ирж, олон ч удаа зохиомж өөрчлөгдөж, олон ч шинэ дэлгэц нэмэгдсэн билээ. Тэр бүрт миний хийсэн генератор хэрэглэгдэн, маш их цаг хугацаа, хөдөлмөр хэмнэсэн дээ.

Бас нэгэн удаа Curl 4 дээр программ бичих хэрэг гараад Curl-г сурах хэрэг гарав. Долоо хоног оролдсоны эцэст ойр зуурын программ бичихтэйгээ боллоо. Бичсэн программаа тестлэх хэрэг гарч, арай туршлагатай нэгнээс яаж тестлэх талаар асуув. Тэгсэн debug хийж л тестлэдэг юм ярьлаа. Энэ арга хэтэрхий бүтээмж багатай, яг үнэнийг хэлэхэд тохиромжгүй тэнэг арга шиг санагдсан тул интернэтээр хайж үзлээ.

Харамсалтай нь JUnit шиг CurlUnit гэж байх авч Curl 6 буюу түүнээс дээших хувилбарыг дэмждэг гэсэн байлаа. Өөрөө бичихээр шийдэж JUnit-н source-г нааш цааш нь гүйлгэж жаахан харж байгаад 2 цаг нухаад хийсэн нь нэг иймэрхүү юм болсон юм. Гар утсан дээрх зурагны огноог харвал 2010.09.17 нд хийж байжээ. Сайн харвал цаана нь curl дээр бичсэн код харагдах ажгуу.

Энэ жилийн нэг сард (2013.01, өмнөх компанид), шахуу төлөвлөгөөтэй хэрнээ тест хамралт (test coverage) өндөр байх ёстой гэсэн сонин өндөр шаардлагатай төсөлд ажиллахаар болов. Бүгд амжихгүй тул нэн түрүүнд зайлшгүй шаардлагатай хэсгийн тест кодыг бичээд тестлэх шаардлагагүй хэсгийг орхичихов. Тэгтэл нэлээн асуудал босох янзтай. Шинэ хүүхдүүд даргад загнуулаад л … Амжуулах боломжгүй, хэт богино хугацаанд бүгдийг тестлэж амжсангүй гэж хэлж чадахгүй, хэцүү байгаа бололтой. Мэнчийтлээ улайсан харагдна. Дөнгөж эхний шат болохоор дараагийн шатанд бас л ингэж хэлүүлж таарах болохоор 1 цаг оролдоод тестлэгдээгүй үлдсэн бүх JavaBean классыг тестлэх тест код генерацладаг нэг tool хийгээд тавьчихлаа. Нөгөө мэнчийтлээ улайсан нөхөр баярлаад жигтэйхэн, тасүкаримасү (тус боллоо) гээд л …

Одоогийн компанид дөнгөж сургууль төгссөн гэлтгүй гайгүй сайн, өсөх ирээдүйтэй, залхуу нөхөр бий. Тэр нөхөр нэг удаа ингэж байна. Тест кодонд ашиглаж байгаа өгөгдлийг гараар бэлтгэх нь их цаг хугацаа, хөдөлмөр зараад байна. Би интернэтээс хайж байгаад мэдээллийн сангаас одоо байгаа өгөгдлийг түүж аваад бэлдэц (fixture-тест өгөгдөл) хийдэг helper биччихлээ гэж байна. Бүх тест кодонд ашиглагддаггүй юм гэхэд автоматаар генерацласан өгөгдлийг засаад ашиглах нь цаг хугацаа хийгээд хөдөлмөр ихэд хөнгөвчлөх тул зөв зүйтэй санаачлага юм.

Энэ мэтээр багт нэг ийм хүн байхад бүтээмж хэд дахин илүү хурдан болдог юм. Эндээс миний юу өгүүлэх гэснийг ойлгосон байх гэж найдна.

2013.11.11

Unimedia Solutions

Unique Ideas

Batzorigt Rentsen

Written by

Tech Lead at MLab Mongolia. Former Tech Lead at Unimedia Solutions.

Unimedia Solutions

Unique Ideas

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade