Kodun keyfiyyəti. Code Review nədir və nə üçün lazımdır?

Git ilə tanışsınızmı? Əgər taniş deyilsinizsə, zəhmət olmasa əvvəl bu məqaləni oxuyun.

Kodun yoxlama prosessi kodun keyfiyyətinin yüksək səviyyədə saxlamaq üçün nəzərdə tutulub. Bir proqramçının kodu başqa proqramçı tərəfindən standartlara, keyfiyyətə, gələcəkdə dəstəklənməsinə və məhsuldarlıqına uyğunluğunu yoxlanılır.

Kodun yoxlamaya yolladığı sorğuya Pull Request, və hərdən Merge Request deyilir. Qısa formada PR və ya MR kimi qeyd olunur.
PR bir və ya daha çox Commit-lərdən ibarət olur. Qısa təsvir və Ticket linki ilə qeyd olunur.
Qaydalardan asılı olaraq, 1 və ya daha çox Reviewer (yoxlayan proqramçılar) tərəfindən yoxlanılmalıdır ki, kod təslim olunsun. Kod standartlara cavab verirsə, Reviewer-lər “Approve” düyməsinə basaraq kodun düz olduğunu təsdiqləyirlər.

Code Review nə üçün lazımdır?

Güman edirəm ki siz proqramçısınız və artıq bir neçə problemləri həll edən kodu yazmısız. Kodunuzun keyfiyyətinə həmişəmi fikir verirsiniz? Belə bir kod varmı, hansını ki siz tələsik yazıb təslim etmisiz? Adı aydın olmayan dəyişəni yaradıb harada istifadə etdiyinizi bilmədən belə kodunuzda təslim etmisinizmi?
Əlbəttə ki etmisiniz, və yagin ki bir neçə dəfə etmisiniz.
İndi isə kodu yazarkən təsəvvür edin ki, onu oxuyub problemlərinizi axtaracaqlar. Kodunuzun keyfiyyəti neçə pillə qalxacaq o halda? Siz yagin ki yazmaqdan qabağ yaxşıca fikirləşib ən ideal bir kod yazmağa çalışacaqsız. Dəyişənin adını maksimal olaraq vəziyyətə uyğun seçəcəksiniz, alqoritmi elə yazacaqsız ki, öz işini qısa bir müddətdə görsün, və həmçinin kodunuzun gözəlliyinə də fikir verəcəksiniz.
Bu əlbəttə ki kodunuzu oxuyan proqramçıların professionallıq səviyyəsindən asılıdır. Amma mənim fikirimcə hər kəs başa düşür ki bu prosess nə üçündür və nəyə yarıyır.

Code Review-un mənfi cəhətləri

Kod yoxlama prosessin mənfi cəhətləri üstünlüklərədən daha azdır. CR prosessi zamanı bir neçə proqramçı eyni vaxtda bir problemin həlli ilə məşğul olur. Proqramçının iş vaxtı çox dəyərli və bahalı olduğuna görə şirkət bu koda daha çox pul sərf edir.
Amma, bir təsəvvür edin ki, necə gəldi yazılan kodun gələcəkdə dəstəklənməsi, başa düşülməsi və refaktoru neçə proqramçı saatına çevrilə bilər?

Standartizasiya problemləri – demək olar ki hər şirkətdə yaranır və proqramçılar arasındaki mübahisəni yaradırlar. Ona görə mütlək komanda və ya şirkət daxili standartizasiya qanunları olmalıdır. Bu qərar sizi çoxlu problemlərdən qurtaracaq.

Bəzən Code Review hətta konfliktlərə gətirib çıxara bilər. Yazıları və qeydləri nəzakətlə yazmaq lazımdır. Kodun avtorunun biliklərini sual altına qoymadan dəyişiklik qeydlərinizi yazın. Bunun hətta öz xüsusi texnikası vardır. Öz fikirlərinizi daha açıq və aydın izah etməlisiniz.

Kodun keyfiyyətinə gəldikdə

Keyfiyyətli kodun müəyyən etməyin dəqiq bir yolu yoxdur.
Amma mənim fikirimcə o aşağıdaki qaydalara riayət etməlidir:

  • Oxunma rahatlığı – Kod qarışıq və lazımsız konstruksiyalardan ibarət olmamalıdır, kod kommentlərsiz, dokumentasiyasız başa düşülməlidir.
  • Genişlənmə imkanı – Hər hansı yeni funksional və parametrləri rahatlıqla heçnəyi qırmadan əlavə etmək imkanı olmalıdır.
  • Kod elastik olmalıdır – Kodun məntiqini dəyişmək üçün çoxlu əməl etməyə ehtiyac olmamalıdır.
  • Göstərmək ‘qorxusu’ – Kodunuzu başqalar ilə paylaşmağa çəkinmirsinizsə, deməli keyfiyyəti yaxşı səviyyədədir.
  • Test örtüsü – Kod maksimal olaraq testlərlə örtülməlidir, – hər funksional və obyekt bütün bildiyiniz variantlarda testlərlə təmin olunmalıdır

Bu məsələ ilə bağlı çoxlu kitab, məqalə və başqa mənbələr vardır.

Əlavə olaraq kodunuzun keyfiyyətinin dərəcəsini özünüz də yoxlaya bilərsiz. Hər hansı bir-neçə vaxt qabağ yazılan kodunuzu açıb oxuyun. Ən azı 6 ayliq koddursa, və siz onu rahatlıqla başa düşürsünüzsə, deməli o qədər də keyfiyyətsiz kod deyil. Və əgər kolleqalarınız rahatlıqla o kodu başa düşürsə, deməli siz keyfiyyət standartlarına uyğun yazırsınız.


Blog yazılarım xoşunuza gəlirsə, onlara Facebook-da like qoyub yazıla bilərsiz!
Təşəkkür edirəm!

Kodunuz gözəl olsun!

Enjoy this blog? Please spread the word :)