Code review гэж юу вэ? Яагаад хэрэгтэй вэ?

Myagmarsuren Tserenchimed
Nomadays
Published in
4 min readJun 18, 2018

Програм хангамжийн стартапын амжилттай явах гол зүйл бол хөгжүүлж байгаа бүтээгдэхүүн буюу програм хангамж. Сайн програмыг чанартай кодчилол бий болгодог. Тэгвэл сайн кодчилсон гэдэгтээ яаж итгэлтэй болох вэ?

Code review гэдэг нь Source code-ыг системтэйгээр нягталж алдаа болон чанарыг үнэлэх процесс юм.

Code review хийх үйл ажиллагаа нь доорх зорилгын хүрээнд байна.

  • Багийн чадамжийг дээшлүүлэх — Хамгийн чухал нь хөгжүүлэгчдийн ур чадварыг сайжруулах
  • Хамгийн сайн туршлага — Кодын даалгаврыг хамгийн үр ашигтай аргаар хэрэгжүүлсэн эсэхийг тодорхойлох.
  • Алдаа илрүүлэх — Логикийн алдаануудыг хайх.
  • Сул эмзэг хэсгүүдийг илрүүлэх — Хамгийн түгээмэл тохиолдож буй сул талуудыг тодорхойлох.
  • Malware үүдийг хайж олох — Кодод ямар нэгэн халдлага хийх боломжтой “арын хаалга” байгаа эсэх.

Хэн code review хийх вэ?

Ерөнхийдөө хөгжүүлэгч тухайн кодын баазыг мэддэг нэгээс хоёр хянагчийг санал болгодог. Хянагчид нь багийн хамгийн туршлагатай хүмүүсээс бүрдэнэ. Ихэвчлэн аль нэг нь төслийн удирдагч эсвэл ахлах инженер байна. Code review хийх үйл явцад хянагчид тус тусдаа ялгаатай өөрчлөлтийг санал болгож хянах процесс гурваас дээш талууд санал зөрөлдвөл асуудлыг code review ээс гадуур хэлэлцүүлэг хийж шийдэх хэрэгтэй.

Code review хийх арагууд

Хамгийн энгийн түгээмэл арга бол version control system (git) ашиглах. Хөгжүүлэгч бичсэн кодоо үндсэн кодын баазруу нэгтгэх хүсэлт гаргана. Гаргасан хүсэлтийг хянагчид үзээд засах шаардлагатай хэсгүүд дээр коммент бичиж үлдээнэ. Буцаад хөгжүүлэгч засах ёстой зүйлсийг засаад хүсэлт илгээнэ. Гаргасан хүсэлт нь 2 болон түүнээс дээш хянагчид хянаж үзээд зөвшөөрсөн тохиолдолд үндсэн кодын баазад нэгтгэгдэнэ.

Өөр нэг арга бол пээр програмчлал. Хоёр хөгжүүлэгч хамт суугаад нэг нь хянаж нөгөө нь код бичих зарчмаар ээлжлэн тухайн мөр код болгоныг бичнэ. Хэдийгээр 2 хүн/цагийг үрж байгаа боловч дараа нь code review хийхэд хугацаа алдахгүй. Мөн багийн харилцааг илүү бат бөх болгодог.

Code review хэрэгжүүлэхэд анхаарах зүйлс.

Code review хийхэд бэлдэх
Хөгжүүлэгчийн гол үүрэг бол code review хийхэд нягталж буй хүмүүсийн цаг хугацааг дэмий үрэхээргүй бас мотивацгүй болгохгүйн тулд кодыг бэлдэх хэрэгтэй.
Хэмжээ болон хамрах хүрээ — Шинэ боломж нэмэх эсвэл алдаа засаж байгаа бол тухайн зорилгынхоо хүрээнд товч тодорхой байлгах. Хэрэв олон тооны файл болон том хэмжээний кодод өөрчлөлт орсон эсвэл code review хийхэд 20-оос илүү минут зарцуулах шаардлагатай бол олон жижиг code review хийхэд бэлдэх хэрэгтэй. Жишээ нь: Програмд шинээр нэмэгдсэн API ийн хийсвэрлэл болон бичиг баримтыг нэг code review болгоод харин тэдгээр хийсвэрлэлийн хэрэгжүүлэлтийг тусдаа code review болгон хувааж болно.

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

Code review хийхдээ цаг хугацааны үе шатанд хуваах.
Бүх төслийг тэр чигт нь нягтлах гэж оролдох хэрэггүй. Туршлагатaй хөгжүүлэгчид нэг удаадаа 400 мөр кодоос илүү код нягтлаад хэрэггүй гэж зөвлөдөг. Мөн нэг удаагийн шалгалт нэг цагаас илүүгүй байвал зүгээр. Яагаад гэвэл хүн маш их мэдээллийг нэг дор үр дүнтэйгээр анализ хийж чадахгүй. Ялангуяа энэ нь урт хугацаанд үргэлжлэх юм бол. Иймэрхүү байдлаар явбал ноцтой алдаануудыг хайхрахгүй өнгөрөх магадлалтай тул багийнхнаасаа тусламж хүсэх хэрэгтэй. Хэн нэгэнтэй хамтарснаар кодыг нягтлах явц илүү сайжирна.

Code review хийхэд туслах багажуудыг ашиглах.
Жишээ нь

  • Crucible атласианаас гаргасан энэхүү багаж нь зөвхөн багийн гишүүн гэлтгүй хөндлөнгийн хянагчаар тухайн мөр код, файл, бүхэл өөрчлөлтүүдийг code review хийхэд шаардлагатай бүх боломжуудыг гаргаж өгсөн.
  • Мөн бидний хамгийн түгээмэл ашигладаг Github/Bitbucket.
  • Upsource
  • Gerrit

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

Автоматаар засагдчих зүйлсийг анхаарах хэрэггүй.
Жишээ нь зайг tab аар авах эсвэл space ээр авах гэх мэт код форматаар хийгдэж болох үр бүтээлгүй үйлдэл дээр цаг үрэх хэрэггүй.

Хэтэрхий хатуу дүрмүүдийг тулгахгүй байх.
Жишээ нь “Хувьсагчийн нэр 8 тэмдэгтээс ихгүй байх” гэх мэт шаардлагагүй жижиг зүйлсийг тулгах хэрэггүй. Нэрийг 8 тэмдэгтэд барьснаас илүү ойлгомжтой байх нь чухал.

Тодорхой хэмжээнд барих.
Code review хийх цаг хугацаа болон мөр кодын тоо аль аль нь богинохон (дээр хэлсэнчлэн хамгийн ихдээ 200 -400 мөр код)байвал зүгээр. Бичсэн кодоо нягтлуулж байгаа хүн кодын талаар болон гаргасан шийдлүүдийнхээ талаар code review хийх хүмүүсд тайлбарлаж байх хэрэгтэй. Хэрвээ ноцтой алдаа илрүүлвэл нягтлах процессоо түр зогсоогоод бичсэн хүнд нь засах боломжийг нь олго. Ингэж буй шалтгаан нь иймэрхүү ноцтой алдаа нь тухайн үед засагдахгүй дахин code review хийх шаардлага гарахыг үгүйсгэхгүй.

Зорилгынхоо хүрээнд кодчилсон уу
Аливаа өөрчлөлт болгон (шинэ функц нэмэх, засвар өөрчлөлт хийх, алдаа засах) тодорхой зорилготой байх хэрэгтэй. Code review хийхдээ энэ зорилгынхоо хүрээнд байна уу гэдэгийг нягталж үз. Мөн аливаа функц болон класс тодорхой шалтгааны хүрээнд тодорхойлогдох ёстой. Хэрвээ тодорхойгүй ойлгомжгүй бол код дахин засагдах ёстой болно.

Эерэг хандлагатай бай.
Заримдаа сode review хийх процесс багийн гишүүдийн хооронд хагарал үүсгэх нь бий. Хэн ч шүүмжлэлийн бай болохыг хүсэхгүй. Тиймээс хамтрагчаа ажил хийх ямар ч мотивацгүй болгох гээгүй л бол найрсаг уур амьсгалыг бүрдүүл. Алдаа дутагдал болгон дээр сөрөг хандлага гаргахын оронд цаашид кодын чанарыг сайжруулах шинэ боломж гэж хараад үзээрэй.

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

Code review бол хөгжүүлэгчид бие биенээсээ суралцаж туршлага хуваалцах, чадвараа дээшлүүлэх гайхалтай бололцоо . Code review бол чиний bug-тай код эцсийн бүтээгдэхүүнд нийлүүлэхгүй байх хамгийн сүүлийн боломж :). Бас бүтээгдэхүүн буюу програм хангамжийг хамгийн чанартай кодын стандарттай байлгана.

--

--