Code-Complete-9780735619678

Sonlar umuman olganda (Code Complete kitobidan tarjima 12.1 bo’lim)

Ushbu maqolada dasturlashda sonlar bilan ishlash haqida, hamda “sehrli sonlar” haqida tushuncha berilgan. Maqola, Stiv Makkonnellning “Code Complete” kitobining ikkinchi nashrining, 12.1 chi bo’limining tarjimasi hisoblanadi. Shu kitobni boshidan oxirigacha o’qib chiqishni qattiq tavsiya etaman.

Quyida sonlardan foydalanishda kelib chiqishi mumkin bo’lgan xatolar sonini kamaytirish imkonini beruvchi bir nechta maslaxatlar berilgan.
“Sehrli sonlar”dan chetda bo’ling. Sehrli sonlar – bu 100 yoki 47524 kabi oddiy sonlar ammo ular dasturda sababsiz paydo bo’ladi. Agarda siz nomlangan konstantalarni ishlata oladigan muhitda dasturlasangiz, sexrli sonlar o’rniga ulardan foydalaning. Agarda nomlangan konstantalarni ishlata olmasangiz, iloji bo’lganida global o’zgaruvchilarni ishlating.

Sehrli sonlardan xalos bo’lish bizga 3 ta afzallikni taqdim etadi.

  • O’zgartirishlarni ishonchliroq bajarish mumkin. Agarda siz nomlangan konstantalardan foydalansangiz, 100 sonini har yerdan qidirib o’tirishga xojat qolmaydi, xamda siz bexosdan boshqa narsa uchun ishlatiladigan boshqa sonni xam o’zgartirib qo’ymaysiz.
  • O’zgartirishlarni kiritish osonroq bo’ladi. Maksimal elementlar soni 100 dan 200 ga o’zgargan vaqtda, sexrli sonlardan foydalangan bo’lsangiz, siz kodni xar joyidan 100 sonini qidirib topib uni 200 ga almashtirishingiz kerak bo’ladi. Agarda siz 100+1 yoki 100-1 larni ishlatgan bo’lsangiz u xolatda 101 va 99 larni 201 va 199 larga o’zgartirishingiz xam kerak bo’ladi. Nomlangan konstantalardan foydalanganda esa siz faqatgina bitta joyda konstantani qiymatini 100 dan 200 ga o’zgartirasiz.
  • Dastur yaxshiroq o’qiladi. Albatta:
for i = 0 to 99 do ...
kodiga qaraganda 99 bu elementlarni maksimal qiymatini ifodalashini taxmini qilish mumkin. Ammo:
for i = 0 to MAX_ENTRIES-1 do ...
kodiga qaraganda esa bunga aniq ishonch xosil bo’ladi. Xatto siz son hech qachon o’zgarmasligiga ishonsangiz ham, nomlangan konstantalardan foydalanilganda, dasturingiz yaxshiroq o’qiladigan bo’ladi.
Lozim bo’lgan joylarda aniq belgilangan nol va birlardan foydalaning 0 va 1 qiymatlari inkrement, dekrement hamda sikllar boshlanishida massivlarni birinchi elementini raqamlashda ishlatiladi. Quyidagi kodlarda 0 va 1 dan foydalanish ham mumkin:
for i = 0 to CONSTANT do ...
 
total = total + 1
Mana sizga yaxshi bir maslahat/qoida: dasturda konstanta sifatida faqat 0 va 1 nigina ishlating, boshqa har qanday sonlarni esa tushunarli nomlar bilan aniqlab konstanta ko’rinishida ishlating.
Nolga bo’lish xatoliklari Har safar bo’luv “simvol”idan foydalanganingizda (ko’p tillarda bu /), maxraj sifatida 0 bo’lishi ham mumkinligi haqida o’ylang. Agarda shunday holat vujudga kelish ehtimoli bor bo’lsa, 0 ga bo’lish holatidagi xatolik kelib chiqishini ogohlantiruvchi kod yozing.
Turlarni keltirishni tushunarli amalga oshiring Dasturingizni kimdur o’qigan vaqtida dasturda uchraydigan ma’lumot turlarini keltirishlaringizni tushunib yetishiga ishonch hosil qiling. C++ da quyidagicha yozishingiz mumkin:
y = x + (float) i
Microsoft Visual Basic da esa:
y = x + CSng( i )
Bu tajriba sizga keltirishlaringizni bir xil ma’noli bo’lishini ta’minlaydi – har xil kompilyatorlar har xil “konvertatsiya” qiladi, bunday yondashuvda esa kutgan natijangizni olishingiz kafolatlanadi.Har xil turlarni solishtiruvidan chetlaning Agarda x – kasr son, i – butun son bo’lsa,
if ( i = x ) then ...
tekshiruvi ishlamasligi deyarli kafolatlanadi. Keltirishni kodini kompilyator ikkita bir xil turdagi sonni solishtira olishi uchun o’zingiz yozib qo’ying.
Kompilyatoringizni ogohlantirishlariga e’tibor bering Ko’pgina zamonaviy kompilyatorlar bir qatordagi har xil turdagi sonlar haqida xabar beradi. Bunga e’tibor bering! Ertami kechmi har qanday dasturchi jonga tekkan xatoni topishda u bu kimdan yordam so’raydi, va natijada kompilyator har doim bu xatolik haqida xabar berib turganligi ayon bo’ladi. Yuqori darajali mutaxassislar o’z dasturlarini shunday yozadilarki unda kompilyatorni birorta ham ogohlantirishi bo’lmaydi. Ishni o’zingiz bajargandan ko’ra uni bajarilishini kompilyatorga taqdim etish oson.
Farhod Dadajonov tarjimasi.
(565 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: