Буруу үлгэр(Anti patterns)
Хүүхдийнхээ дэргэд оймсоо тайлж чулуудлаа эсвэл хамраа ухлаа, аяга тавгаа хамаагүй хаялаа, буруу үлгэр дуурайл үзүүлээд байна гэж эхнэртээ заримдаа зэмлүүлдгээ нуугаад яахав. Буруу үлгэр дуурайл гэдэг маань амьдрал дээрх antipattern юмуу даа. Ерөнхий утгаараа бол буруу үлгэр дуурайл, буруу шийдэл, аливаа зүйлийг ашиггүй оновчгүй байлгадаг шинж тохиргоо бөгөөд дахин дахин энд тэнд үзэгдээд давтагдаад байгаа зүйлийг хэлнэ. Буруу үлгэр хүний өдөр тутмын үйлдэл, компьютерийн системийн загварчлалаас авахуулаад төслийн удирдлага, жава програмчлал, с програмчлал гэхчилэн салбарлан ангилагдаж судлагдсаар байна. Эдгээрийг судлаж тогтоосноор ирээдүйд гарах алдаанаас сэргийлэх, болохгүй байгаа юмны асуудлын шалтгааныг олж зөв голдрилд оруулах ач холбогдолтой. Манай эхнэр л гэхэд надад байгаа antipattern-ийг олж харчихаад хүүхдүүд дээрээ тэр дутагдлуудыг гаргахгүй гэж сэргийлээд байна шүү дээ.
Буруу үлгэрүүдийг дизайны үлгэрүүд(design pattern) шиг яг таг тодорхойлж зурж дүрслэх боломжгүй. Учир нь буруу үлгэр гэдэг маш өргөн хүрээтэй ойлголт. Ингээд янз бүрийн салбар дахь буруу үлгэрүүдээс жишээ авч үзье.
Системийн шийдлийн буруу үлгэрүүд.
Алтан сүх. Хэрвээ таньд гайхалтай сайхан алтан сүх байгаад түүгээрээ бүх юмыг хийдэг бол юм болгон мод шиг харагдана, юм болгоныг мод шиг авч үзэх болно. Бодит байдал дээр бол юм болгон мод шиг биш гэдэг нь мэдээж. Үүний жишээ бол ганцхан хэлийг маш сайн эзэмшсэн програмист байж болно. Тэрбээр бүх програмыг тэр хэл дээрээ бичих бөгөөд бүх асуудлыг тэр хэл дээрээ л буулгаж сэтгэнэ. Бодит байдал дээр бол асуудал болгонд төгс зохицдог програмчлалыг хэл гэж байхгүй. Ямар хэл дээр хөгжүүлэлт хийх нь асуудлын мөн чанар, орчин нөхцөл гээд олон зүйлээс хамаардаг.
Үхэр буугаар ялаа алах. Хэтэрхий нүсэр, өндөр технологи хэрэглэсэн шийдлээр энгийн юмыг хийх. Мэдээж сөрөг тал нь хайран үхэр бууны сум. Үхэр бууны сум мэдээж үнэтэй шүү дээ. Ялааг ялааны алуураар алах хэрэгтэй, цаанадаж ялааны хор байхад л хангалттай. Энэ буруу үлгэрийг англиар Мөнгөн сум(Silver bullet) гэдэг. Барууны үлгэр домогт ад зэтгэрийг мөнгөн сумаар алдаг гэдгээс гаралтай. Мөнгөн сумыг дарагдашгүй ад зэтгэрийг номхотгоход л хэрэглэхээс биш гахай тахианд үрэхгүй.
Програмчлалын буруу үлгэрүүд
Busy spin. Завгүй эргэлт. Ямар нэг үзэгдэл болохыг хүлээж CPU-г үй зайгүй давталт хийлгэхийг хэлнэ. Энэ нь бусад програмуудын ажиллагааг удаашруулна. Ингэж давталт хийхийн оронд мессеж дамжуулах, сигнал солилцох зэргээр шийдэх нь зөв.
Hard coding. Програмын код дотор өгөгдөл, формат, тохиргоо зэргийг хадаж оруулахыг хэлнэ. Ийм програм нь уян хатан биш байдаг. Өгөгдлийг гадаад эх үүсвэрээс авах боломжтойгоор(файлаас, хэрэглэгчээс гэх мэт) програмчлах хэрэгтэй.
Шидэт тоо. Код дотроо ямар нэг тайлбаргүйгээр тогтмол тоог шууд ашиглах. Ингэх нь кодыг ойлгомжгүй болгох ба тухайн шидэт тоог өөрчилснөөр төсөөлөгдөөгүй үр дүн гарах нөхцөл болдог. Иймд програм дотор тогтмол тоо хэрэглэхээр бол тогтмол хувьсагчид хадгалж хангалттай тайлбарыг хийж өгөх шаардлагатай.
Дизайны буруу үлгэрүүд
Бурхан обьект. Бүгдийг хийдэг бүгдийг мэддэг бурхан обьект буюу класс. Обьект хандлагат програмчлалын зарчимаар бол асуудлыг жижиг жижиг хэсгүүдэд хуваагаад шийдэх байдаг. Бурхан обьектын хувьд бүх өгөгдөл болон метод нь өөр дээр нь байх учраас бурхан обьект өөрөө л ёстой асуудал юм. Обьект хандлагат дизайны зарчимыг баримтлах хэрэгтэй.
Тохиолдолд тулгуурлаж кодчилох. Ямар нэг онцгой тохиолдол үүсэхэд програмын ерөнхий логикоос салаалаад өөр урсгалаар ажиллаж эхлэнэ гэсэн үг. Энэ бол маш тааруухан дизайн бөгөөд ойлгох, өөрчлөхөд хэцүү, хурдны хүчний хувьд тааруу байдаг. Ихэвчлэн дизайныг анх хийж байх үед байхгүй байсан шаардлагууд дараа нь урган гарч ирснээр кодыг ийм болгоход хүргэдэг. Зөв арга зам нь шинэ шаардлагыг оруулж ирэхийн өмнө дизайныг refactoring хийх хэрэгтэй.
Бусад буруу үлгэрүүд.
Хоцорж байгаа төслийг нөөцийг нэмэгдүүлэх замаар хурдасгах. Энэ бол төслийн удирдлага дээр гардаг буруу үлгэр юм. Бүтэл муутай яваа төсөл дээр шинээр хүн хүч нэмэх юм бол хурдасхаасаа удаашрах нь элбэг байдаг. Учир нь шинэ хүмүүс шууд орж ирээд ажлыг урагшлуулж чаддаггүй. Тэдгээр хүмүүсийг сургах, төслийн даалгаварыг ойлгуулахаас авахуулаад гол ажлаасаа гадуур өчнөөн зүйл хийж цаг болон нөөцийг үрдэг. Харин байгаа нөөцөө зөв хуваарилах юмуу арга барилаа өөрчлөөд үзэх хэрэгтэй. Гаднаас хүн хүч оруулж ирснээс гадны туршлагатай хүнээс зөвлөгөө авсан үр дүнтэй болов уу.
Системийн архитектурч код бичих шаардлагагүй. Системийн араг ясыг зангидаж дизайныг зохиодог хүн код бичдэггүй байж болно гэсэн буруу үлгэр. Архитректурч UML дээр ч юмуу сайхан зурчихдаг, архитектурын баримтыг гоёмсог хийчихдэг, EJB эд нарыг тайлбарлачихдаг, TCP эд нарыг ялгачихдаг байхад болоо гэж байгаа юм. Бодит байдал дээр бол урьд нь код хичнээн бичдэг байсан ч гэсэн сүүлийн 1-2 жилийн дотор код бичээгүй хүний хийсэн дизайнаар код бичигдээд ажиллана гэдэг асуудалтай байдаг. Зүй нь бол архитект хүн код бичдэг байх ёстой, гэхдээ өдөржин код бичээд бай гэсэн үг биш. Өөрийн шийдлээ код болж чадна гэдгийг харуулдаг, системийн гол зангилаа хэсгүүдийн код яаж хийгдэж байгааг мэддэг байх ёстой юм. Сайн архитектурч бол хэнээс ч дутахгүй кодер байхыг эрмэлзэх хэрэгтэй.
Холбоосууд