Clean Code’dən qeydlər: İkinci hissə, Coder Qorqud and ad qoyma mərasimi.

Simuratli
3 min readJun 2, 2020

Yaxşı ad seçmək zaman alır amma uzun müddətdə daha çox zaman qazandırır

Hər şeyə ad veririk Məsələn funksiyalara , siniflərə , dəyişkənlərə. Adlandırma kod yazmanın əsas hissəsidir. Ona görə bunu yaxşı etsək bizim üçün daha yaxşı olar.

Nümunə

const d; //elapsed time in days (gün cinsindən keçən müddət)

D burada bizə heç birşey ifadə etmir. Bunun üçün daha mənalı adlar seçməliyik. Aşağıdakılar kimi:

const elapsedTimeInDays;
const daysSinceCreation;
const daysSinceModification;
const fileAgeInDays;

Bəs aşağıdakı kodun məqsədi nədir? Bu kodun nə elədiyinin izah etmək niyə nu qədər çətindir, Qarışıq funksiyalar yoxdur və ya funksiya çətin deyildir. Burada tək problem kodun qapalı olmağıdır.

function func(n){
var arr=[];
for(var i=1;i<=n;i++){
if(i%2==0){
arr.push(i)
}
}
console.log(arr)
}
func(4);
  1. func nədir ?
  2. func’un n elementinin rolu nədir?
  3. 2 niyə istifadə etmişik?
  4. console.log() bizə arrda nəyi qaytaracaq?
  5. arr nədir?

Bunun cavabı isə kodda deyil bunu yazan programçının beynində.

function findEvenNumbers(number){
var evenNumbersArray=[];
for(var index=1; index<=number; index++){
if(index % 2 === 0){
arr.push(index)
}
}
console.log(evenNumbersArray)
}
findEvenNumbers(4);

Buradan görürükki funksiyada heçbirşey dəyişmədi sadəcə kod daha açıq hala gəldi.

Pis adlandırmalardan biridə l(kiçik L) və O istifadə etməkdir.

Çünki görünüşdə bir və 0 a çox oxşayırlar

var a = l;
if (O == l)
a = O1;
else
l = 01;

Programçılar kod yazarkən problemləri özləri yaradırlar. Məsələn eyni scopedə 2 fərqli obyektə verə bilmirik deyə birini dəyişdirməyə çalışırıq. Ədəd əlavə etmək kifayət etmədiyində, bunu bir hərfini silərək edirik. amma adlar fərqli olacaqsa mənalarıda fərqli olmalıdır.

a1, a2, a3, … kimi adlandırmalar qətiyyən mənalı deyildir.Bu adlar yazılan element haqqında zərrə qədərdə olsa informasiya vermir.

Product adlı bir sinifimiz olduğunu xəyal edin. Bir də ProductInfoProductData siniflərimiz olsun. “Info” ve “Data” birbirinə yaxın anlamlı, ona görədə təsirsiz adlar hesab edilirlər

Tələffüz edilə bilən adlar istifadə edin

Əgər bir adı tələffüz edə bilmiriksə onu istifadə etməyin .

Aranabilir İsimler Kullanın

Tək hərfli adlar və rəqəmdən ibadər adlar axtarış üçün uyğun deyillərdir.
Məsələn MAX_CLASSES_PER_STUDENT sabitini çok rahat tapa bilərik. Ancaq 7'ni tapmaq olduqca çətindir. Eyni şəkildə e nidə tapmaq çətindir.

Sinif addları Customer, WikiPage, Account ya da AddressParser kimi adlardan ibarət olmalıdır. Sinif adı olaraq bir feil istifadə edilməməlidir.

Funksiya adları postPayment(), deletePage() ya da save() kimi feillərdən ibarət olmalıdır.

Söz oyunu yaratmaqdan qaçın

İki fərqli məqsəd üçün eyni sözü istifadə etməkdən və ya iki fərqli sözü eyni məqsəd üçün istifadə etməkdən qaçın. Məsələn Controller, Manager ya da Driver sözlərini eyni siniflər üçün istifadə etməyin. Birini seçin və onunla davam edin.

Məsələn bizdən qabaq biri add funksiyası yazmış olsun və bu funksiya iki dəyəri birləşdirir olsun. Sonra isə bizim bir elementə digərini daxil edən bir funksiyaya ehtiyacımız olsun. Bu funksiyaya add mı deməliyik? Yox. Bu vəziyyətdə yeni funksiyamıza insert ya da append deməliyik.

Lazımsız contekslərdən qaçınının

firstName, lastName, street, houseNumber, city, state ve zipcode adlı dəyişkənlərmiz olduğunu düşünək.Birlikdə baxanda bir adresin təfərrüatları olduğu məlumdur. Amma təkcə state dəyişkənini görsək yenə eyni şeyimi düşünəcəyik?

Prefixlərdən istifadə edərək kontext yarada bilərik məsələn addrsFirstName, addrLastName, addrState . Ən azından oxuyucular bu dəyişkənlərin daha böyük bir quruluşun parçasını olduğu anlaşılacaq. Daha yaxşı bir həll yolu isə Adress adlı bir sinif yaratmaqdır.

Son nümunəmiz: Gas Station Deluxe adlı bir aplikasiyamız olsun. Bu aplikasiyada hər sinifin başına GSD ön şəkilçisi qoymaq pis bir fikirdir. Məsələn GSD’nın hesabının moduluna MailingAddres sinifi əlavə etdiyimizi və adını GSDAccountAddres dediyimizi düşünək. Daha sonra müştərinin hesabı üçündə GSDAccountAddres istifadə etmək doğru deyildir. Burada GSDAccount hissəsi lazımsızdır.

--

--

Simuratli
Simuratli

Written by Simuratli

MSc. High Energy and Plasma Physics | B.A. Computer Engineering | Content Creator. https://bento.me/simuratli

No responses yet