Davamlı Kod Yazmaq üçün Məsləhətlər
Kod yazmaq sadəcə bir proqramın "işlədilməsinə" imkan verməklə məhdudlaşmır. Təcrübədə, proqram təminatının hazırlanması vaxtının əhəmiyyətli bir hissəsi mövcud kodları - istər özünüz, istərsə də başqasının kodlarını oxumağa, təkmilləşdirməyə və inkişaf etdirməyə sərf olunur. Buna görə də, saxlanıla bilən kod yazmaq bacarığı istənilən proqramçı üçün vacib bir bacarıqdır. Davamlı kod texniki xidmət xərclərini azaldır, xüsusiyyət əlavələrini sürətləndirir, səhvləri minimuma endirir və komanda əməkdaşlığını daha effektiv edir. Təmiz, aydın və davamlı kod yazmaq üçün bəzi praktik məsləhətlər.
1. Oxunma qabiliyyətinə "ağıllılıq"dan daha çox üstünlük verin
Çox "ağıllı" olan kodu anlamaq çox vaxt çətindir. Məsələn, çox qısa bir kod sətri yazmaq zərif görünə bilər, lakin yenidən oxuduqda çaşdırıcı ola bilər. Bir az daha uzun olsa belə, aydın bir həll yolu seçin. Oxunma asanlığı bir sərmayədir: kodu yalnız bir dəfə yaza bilərsiniz, ancaq onu dəfələrlə oxuyacaqsınız.
Məsələn, birdən çox əməliyyatı tək bir ifadəyə yerləşdirmək əvəzinə, onları mənalı dəyişən adları olan addımlara ayırın. Bu, oxucuya proqramın məqsədini təxmin etmədən başa düşməyə kömək edir.
2. Aydın və ardıcıl adlandırma istifadə edin
Dəyişən, funksiya və sinif adları kodunuz üçün "sənədlərin ilk sətridir". Yaxşı adlar yalnız məlumatlarının formatını deyil, həm də rollarını və ya məqsədlərini təsvir etməlidir. Məsələn, `userList` `ul`-dan daha informativdir və `calculateTotalPrice()` `ctp()`-dan daha aydındır.
Aydınlıqdan əlavə, adlandırma da ardıcıl olmalıdır. Dəyişənlər üçün camelCase istifadə edirsinizsə, layihəniz boyunca ona əməl edin. Dərslər üçün, üstünlük verdiyiniz dil konvensiyasıdırsa, PascalCase istifadə edin. Ardıcıllıq kodun vahid hiss olunmasını təmin edir və oxu zamanı zehni yükü azaldır.
3. “Tək Məsuliyyət” prinsipini tətbiq edin
Saxlanılması çətin olan kodun əsas səbəblərindən biri çoxlu iş görən funksiyalar və ya siniflərdir. Tək Məsuliyyət Prinsipi kod vahidinin yalnız bir əsas məsuliyyətə malik olmasını təklif edir. Həddindən artıq uzun bir funksiya adətən onun parçalanması lazım olduğuna işarədir.
Məsələn, eyni zamanda girişi təsdiqləyən, qiymətləri hesablayan, ödəniş keçidi ilə əlaqə saxlayan və e-poçt göndərən "ödəniş prosesi" funksiyasını sınaqdan keçirmək və dəyişdirmək çətin olardı. Onu ayrı-ayrı funksiyalara (təsdiqləmə, hesablama, ödəniş, bildiriş) ayırmaqla, digərlərini pozmadan bir hissədə dəyişiklik edə bilərsiniz.
4. Təkrarlamadan (QURU) çəkinin, amma həddindən artıq etməyin.
QURU (Özünüzü Təkrarlamayın) vacib bir prinsipdir: eyni kod blokunu bir neçə dəfə kopyalasanız, kiçik bir dəyişiklik hər şeyi redaktə etməyinizi tələb edəcək. Bu, xətaya meyllidir. Həll yolu təkrarlanan məntiqi funksiyaya və ya modula çıxarmaqdır.
Lakin, həddindən artıq təkrarlamanın qarşısının alınmasının oxunaqlılığa da zərər verə biləcəyini unutmamaq vacibdir. Əgər iki kod parçası oxşar görünürsə, lakin əslində fərqli kontekstlərə malikdirsə, "abstraksiya"nı məcbur etmək kodu daha mürəkkəb edə bilər. Balans tapın: təkrarlama həqiqətən mənalı olduqda və birlikdə dəyişdirmə potensialına malik olduqda refaktor.
5. Səliqəli bir layihə strukturu yaradın
Aydın qovluq strukturu texniki xidmətin asanlığına təsir göstərir. Xüsusilə böyük layihələr üçün faylları yalnız fayl növünə görə deyil, xüsusiyyətə və ya modula görə qruplaşdırın. Yaxşı struktur yeni başlayanların layihə arxitekturasını başa düşməsini asanlaşdırır.
Məsələn, bütün UI komponentlərinizi bir böyük qovluğa yerləşdirmək əvəzinə, onları funksiyalara görə bölə bilərsiniz: `auth/`, `profile/`, `checkout/` və s. Bu yanaşma layihənizin böyüdükcə miqyasının artmasına kömək edir.
6. Mürəkkəbliyi məhdudlaşdırın və məntiqi axını izləməyi asanlaşdırın.
İç-içə daxil edilmiş if-else ifadələri, çoxsaylı şərtlər və xüsusi istisnalarla dolu kodu saxlamaq çox vaxt çətindir. Məntiqinizi sadələşdirməyə çalışın. İç-i azaltmaq üçün erkən qayıtma kimi üsullardan istifadə edə və ya mürəkkəb məntiqi müvafiq olaraq adlandırıla bilən kiçik funksiyalara köçürə bilərsiniz.
Əgər funksiyanın çoxlu parametri varsa, bu, həm də mürəkkəbliyi göstərir. Parametrləri daha yaxşı təşkil etmək və genişləndirməyi asanlaşdırmaq üçün konfiqurasiya obyektindən (və ya məlumat strukturundan) istifadə etməyi düşünün.
7. Hədəfə uyğun şərhlər yazın
Şərhlər aydın kodun əvəzi deyil. "Kodun nə etdiyini" izah etməlisinizsə, yəqin ki, onu daha oxunaqlı etmək lazımdır. Bununla belə, şərhlər, xüsusən də dizayn qərarları, sistem məhdudiyyətləri və ya konkret biznes səbəbləri olduqda, bir şeyin "niyə" edildiyini izah etmək üçün hələ də faydalıdır.
Yaxşı şərhlərə misal olaraq, müəyyən bir alqoritmin performans məhdudiyyətlərinə görə niyə istifadə edildiyini və ya validasiya qaydasının bir qaydaya əməl etdiyi üçün niyə qəribə göründüyünü izah etmək olar. Bu şəkildə, digərləri kodu "səliqəyə salmayacaq" və vacib məntiqi pozmayacaqlar.
8. Kod formatlama və stil təlimatlarından istifadə edin
Ardıcıl formatlama kodu peşəkar və asan oxunan göstərir. Mövcud olduqda avtomatlaşdırılmış linterlərdən və formatlayıcılardan istifadə edin (məsələn, JavaScript üçün ESLint + Prettier, Python üçün Black və ya Go üçün gofmt). Bu alətlərlə komandalar boşluq və girinti barədə narahat olmağa ehtiyac duymurlar, çünki hər şey avtomatik olaraq idarə olunur.
Stil təlimatları da kömək edir: tək və ya ikiqat dırnaq işarələrindən istifadə etmək, faylları necə adlandırmaq, uzun sətirləri nə vaxt qırmaq və s. Bu kimi kiçik standartlar uzunmüddətli perspektivdə böyük fərq yarada bilər.
9. Refaktorinq zamanı özünəinamınızı qorumaq üçün testlər yazın.
Davamlı kod təkcə təmiz deyil, həm də dəyişdirmək üçün təhlükəsizdir. Avtomatlaşdırılmış testlər (vahid testləri, inteqrasiya testləri) dəyişikliklərinizin müəyyən edilmiş davranışı pozmadığına zəmanət verir. Testlər olmadan insanlar aşkarlanmamış səhvlər riski səbəbindən kodu təkmilləşdirməkdən qorxurlar.
Kritik bölmələrdən başlayın: qiymət hesablama funksiyaları, endirim qaydaları, validasiya və ya tez-tez dəyişdirilən modullar. Zamanla test əhatə dairəsi genişlənəcək və reqressiyalara qarşı güclü qorunma təmin edəcək.
10. Refaktorinqi müntəzəm və ölçülə bilən şəkildə həyata keçirin
Texniki xidmət davamlı bir prosesdir. Refaktorinq "hər şeyi yenidən yazmaq" demək deyil, kodun davranışını dəyişdirmədən keyfiyyətini yaxşılaşdıran kiçik təkmilləşdirmələr deməkdir. Kodun bir hissəsinə toxunduqda refaktor planlaşdırın: bir az səliqəyə salın, adlandırmanı düzəldin, həddindən artıq uzun bir funksiyanı parçalayın və ya ölü kodu silin.
Kiçik, müntəzəm refaktorinqlər böyük, nadir hallarda baş verən refaktorinqlərdən daha təhlükəsizdir. Dəyişikliklərdən əvvəl və sonra həmişə adekvat testlərin aparılmasını və ya heç olmasa yoxlanılmasını təmin edin.
11. Vacib qərarları sənədləşdirin
Kod şərhlərinə əlavə olaraq, yaxşı layihələr adətən qısa sənədlərə malikdir: tətbiqi necə işlətmək, onu necə qurmaq, mühiti necə konfiqurasiya etmək və yüksək səviyyəli memarlıq izahatı. Bu sənədlərin geniş olması vacib deyil, lakin dəqiq və asanlıqla tapılmalıdır. `README.md` kimi yaxşı saxlanılan bir fayl yeni üzvlərin qeydiyyatına çox vaxt qazandıra bilər.
Əgər əsas texniki qərar varsa (məsələn, müəyyən bir verilənlər bazasının seçilməsi, memarlıq nümunəsi və ya inteqrasiya məhdudiyyəti), əsaslandırmanı sənədləşdirin. Bu, komandanın konteksti başa düşməsinə kömək edir və eyni müzakirəni təkrarlamaqdan çəkinir.
Bağlanır
Davamlı kod yaxşı vərdişlərin nəticəsidir: aydın yazmaq, məsuliyyətləri bölüşdürmək, ardıcıllığı qorumaq, mürəkkəbliyi azaltmaq və dəyişiklikləri testlərlə qorumaq. Heç bir kod mükəmməl deyil, lakin komanda keyfiyyətə sadiqdirsə, hər bir layihə davamlı olaraq inkişaf edə bilər. Yuxarıdakı məsləhətləri tətbiq etməklə, təkcə bu gün deyil, həm də gələcək aylarda və illərdə inkişaf etmək üçün daha yaxşı təchiz olunacaqsınız.