Чанартай код бичих зарчмууд

Myagmarsuren Tserenchimed
Nomadays
Published in
5 min readJun 8, 2017

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

1. Оптимизация, ойлгомжтой байдал хоёрын аль нь чухал вэ?
Оптимизацыг түр март. Кодыг үргэлж хөгжүүлэгчдэд уншихад хялбар бас ойлгомжтой байхаар бичих хэрэгтэй. Учир нь оптимизация хийхээс илүү их цаг хугацаа болон ажиллах нөөц бололцоог төвөгтэй бичигдсэн кодыг эргээд ойлгоход зарцуулдаг. Үнэхээр оптимизация хиймээр байгаа бол тухайн хэсгийг тусад нь модул болгоод 100% тесттэйгээр дор хаяж нэг жил засахааргүй байлгах хэрэгтэй.

2. Хамгийн чухал нь архитектур
Маш олон хүмүүс “Бидэнд архитектур хийгээд байх цаг байхгүй тиймээс аль болох хурдан кодоо бичих хэрэгтэй” гэж хэлдэг боловч ийм бодолтой хүмүүсийн 99% нь маш том асуудлуудтай нүүр тулдаг.
Aрхитектурын талаар бодохгүй код бичнэ гэдэг нүдээ аниад очих газраа төсөөлөөд алхахтай ижил ямар ч үр дүнгүй. Хамгийн анхы мөр кодоо бичэхээс өмнө юуг шийдэх, ямар технологи ашиглах, яаж модулчилах, ямар сервис яаж бусадтайгаа хамтарч ажиллах, ямар бүтэц зохион байгуулалттай байх, яаж тестлэх болон хэрхэн сайжруулалтууд нь явагдах зэрэг олон асуултад хариулсан байх хэрэгтэй.

3. Тест
Тест бичих нь сайн хэрэг гэхдээ бүх зүйл дээр тест бичих нь эргээд төвөгтэй болгодог.

Хэзээ тест зайлшгүй шаардлагатай вэ?
- Модулчилах микро-сервис байдлаар бичих үед
- Нээлттэй эхийн програм бичиж байгаа бол
- Бусад хэсэгт нөлөөлдөг цөм хэсэг эсвэл санхүүд нөлөөлдөг хэсгийг бичиж байгаа үед
- Тестийн өгөгдөл өөрчлөхүйц код бичигдсэн бол

Ямар үед заавал тест бичээд байх шаардлагагүй вэ?
- Стартап эхэлж байгаа үед
- Жижиг багтай, өөрчлөлтүүд нь хурдан хийгддэг бол
- Үр дүн нь хурдан харагддаг амархан код бичиж байгаа бол

4. Энгийн байлга
Шавсан төвөгтэй код бичихээс зайлсхий. Аль болох салгаж энгийн байлгах нь алдаа бага гаргахаас гадна эргээд засахад ч хялбар байдаг. Обьект хандалтат програмчлал дээр хийсвэрлэлийг хэрэгтэй газар нь л ашигла үгүй бол кодыг улам төвөгтэй болгодог.

5. Коммент
Бичсэн кодоо нэгд нэгэнгүй тайлбарласан коммент бичих хэрэггүй. Үнэхээр сайн код бичсэн бол нэг ч комментгүй байсан ч ойлгогдох ёстой. Гэхдээ шинэ хөгжүүлэгчдэд ойлгомжтой байлгах үүднээс ямар үүрэг зориулалттай талаар товчхон коммент бичих нь авч хэрэгжүүлэхэд хялбар болгодог.

6. Хатуу эсвэл зөөлөн холбоос
Үргэлж микро-сервис байдлаар зохион байгуулахыг хичээ. Монолитик програм илүү хурдан ажиллах боловч томрох тусам илүү олон сервер илүү их мөнгө шаардана. Харин микро-сервис байдлаар бичих нь үүрэг зорилгоор тусад нь салгаж хөгжүүлэх, олон төрлийн технологийн сонголтыг өөр өөр модулуудад ашиглах зэрэг илүү боломжийг олгоно.

(Микро-сервисийн талаар бидний МХТС-д тавьсан илтгэлийг эндээс үзээрэй)

7. Код нягтлах
Зөвхөн нэг л хөгжүүлэгч өөрийнхөөрөө аль болох хурдан байдлаар тухайн хэсэг кодыг ганцаараа бичсэн гэж үзэе. Нэг л хүн тэр хэсгийн кодыг засдаг бас ганцаараа ойлгодог. Код муу бичигдсэн бол дараа нь бусад хөгжүүлэгч тухайн хэсэг дээр ажиллах шаардлага гарахад бүгд тэр хэсгийг үзэн ядах болно. Ийм учраас кодыг үргэлж чадварлаг хөгжүүлэгчидээр хянуулж байх хэрэгтэй. Кодыг нягтлахын гол зорилго нь кодыг чанаржуулах юм.

8. Дараа нь засна гэдэг бол худлаа
Би ажиллаж байх хугацаандаа маш олон удаа “Битгийн санаа зов. Бид ирээдүйд энийг засчихна” гэхийг сонссон. Харин үр дүнд нь ирээдүйд маш их технологийн төлөөс төлдөг эсвэл дахиад шинээр эхлэх болдог. Тиймээс цаг хугацаа болон мөнгөө дахиад эхнээс бичихэд төлөхгээгүй л юм бол өөрийгөө ийм байдалд бүү хүргэ.

9. Сэтгэл санаа тавгүй эсвэл ядарцан байх үедээ битгий код бич
Хөгжүүлэгчид ядарсан байхдаа код бичихэд энгийн үеэсээ 2–5 дахин илүү алдаа гаргадаг. Хэт их ажиллах нь муу зуршил. Ийм ч учраас зарим улс ажлын 6 цагтай болох талаар ярилцаж байна, зарим нь бүр хэрэгжүүлээд эхэлцэн байна. Оюуны ажлын бүтээмж биеийн хүчнийхтэй адилгүй.

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

11. Автоматжуулалт болон гар ажиллагаа
Автоматжуулалт нь урт хугацааны хувьд маш их үр ашгийг авчирдаг. Хэрэв нөөц бололцоо байгаа бол автоматжуулах л хэрэгтэй. Магадгүй “5 минут л гарздадаг ажлыг автоматжуулж яах юм?” гэх байх. Тэгвэл үүнийг тооцоолоод үзэе. Хэрэв өдөр болгон 5 хөгжүүлэгч энэ ажлыг тогтмол хийдэг гэвэл 5 мин * 5 хөгжүүлэгч * 21 өдөр * 12 сар = 6300 мин = 105 цаг = 13.125 өдөр ~ 5250$ (8400$ сарын цалин нэг хөгжүүлэгчдэд өгдөг гэвэл) болно. Хэрэв 4000 ажилтантай бол юу болох вэ?

12. Өөр зүйлс хий
Ондоо зүйлс хийх нь оюуны чадавхийг нэмэгдүүлж шинэ санааг төрүүлж байдаг. Хааяа салхинд гарч найзуудтайгаа уулзаж гитар тоглодог ч юмуу түр зуур завсарла.

13. Шинэ зүйлс сурахад цаг гаргаж бай
Програм хангамжийн хөгжүүлэгч үргэлж технологийн хөгжилтэй хамт урагшлах хэрэгтэй. Шинэ зүйлсд суралцахгүй байх нь хоцрогдолд хүргэнэ.

Эх сурвалж:
https://android.jlelse.eu/few-simple-rules-to-write-good-code-my-15-years-experience-78a133557ec5

--

--