JavaRush /Kurslar /All lectures for UZ purposes /Dastur To'g'ri Ishlashini Ta'minlash

Dastur To'g'ri Ishlashini Ta'minlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Dasturchining vazifalari

Ko'pincha yangi boshlagan dasturchilar dasturchi vazifalarini tajribali dasturchilar kabi tushunishmaydi.

Yangi boshlovchidan ko'pincha "Dastur ishlayapti, yana nima kerak?" deb eshitishingiz mumkin. Tajribali dasturchi esa biladi, "to'g'ri ishlash" – bu dasturga qo'yiladigan birgina talablardan biri, va eng muhim talablardan biri ham emas!

Kodni o'qiluvchanligi

Eng asosiysi – bu dastur kodi boshqa dasturchilarga tushunarli bo'lishi. Bu to'g'ri ishlayotgan dasturdan ham muhimroq. Ancha muhimroq.

Agar sizda noto'g'ri ishlayotgan dastur bo'lsa, uni tuzatishingiz mumkin, lekin agar sizda kodini tushunish qiyin bo'lgan dastur bo'lsa, hech nima qila olmaysiz.

Har qanday kompilyatsiya qilingan dastur, masalan, notepad (bloknot) ni oling va uning fon rangi qizilga o'zgartiring. Sizda ishlayotgan dastur bor, lekin tushunarli kod yo'q: bunday dasturga hech qanday o'zgartirish kiritish imkonsiz.

Microsoft dasturchilari Windowsdan Pinball o'yinini olib tashlashlari kerak bo'lgani haqidagi klassik misol, chunki ular uni 64-bitli arxitekturaga portatsiya qila olmadilar. Ular hatto uning manbasini ham olishgan edi. Ular shunchaki yozilgan kod qanday ishlayotganini tushuna olmadilar.

Barcha foydalanish stsenariylarini hisobga olish

Dasturga qo'yiladigan ikkinchi eng muhim talab – bu barcha ishlash stsenariylarini hisobga olishdir. Ko'pincha hamma narsa o'ylagandan ko'ra biroz qiyinroq bo'ladi.

Yangi boshlagan dasturchi dasturida SMS yuborishni quyidagicha ko'radi:

To'g'ri ishlash

Professional dasturchi esa buni quyidagicha ko'radi:

To'g'ri ishlash

Va "to'g'ri ishlash" ko'pincha faqat ko'plab stsenariylarning birgina qismidir. Shu sababli ko'pgina yangi boshlovchilar JavaRushdagi vazifa validatoriga shikoyat qiladilar: 10 dan 1 stsenariy ishlaydi va yangi boshlagan dasturchi bu yetarli deb o'ylaydi.


2. Qisqa qiyinchiliklar

Qisqa qiyinchiliklar

Har qanday dastur ishlaganda qisqa qiyinchiliklar paydo bo'lishi mumkin.

Masalan, agar siz faylni saqlashni qaror qilsangiz va diskingizda joy bo'lmasa. Yoki dastur xotiraga ma'lumot yozishga harakat qilsa, lekin xotira yetarli emas. Yoki internetdan rasm yuklayotib, yuklash jarayonida aloqangiz yo'qolsa.

Dasturchi (dastur muallifi) har bir qisqa qiyinchilikni a) oldindan ko'rishi, b) dastur bu vaziyatda qanday ishlashi kerakligini hal qilishi, v) mo'ljallangan darajada yechimni dasturlashi kerak.

Shuning uchun dasturlar uzoq vaqt juda oddiy xatti-harakatga ega edi: agar dasturda xato yuz bersa, dastur yopiladi. Bu juda yaxshi yondashuv edi.

Faraz qilaylik, siz hujjatni diskga saqlamoqchisiz va saqlash jarayonida diskingizda yetarli joy yo'q ekanligi ma'lum bo'ladi. Dastur xatti-harakatlarining qaysi varianti sizga eng ko'p yoqadi:

  • Dastur yopiladi
  • Dastur ishlashda davom etadi, lekin faylni saqlamaydi.

Yangi boshlagan dasturchiga ikkinchi variant yaxshiroq bo'lib tuyulishi mumkin, axir dastur ishlayapti. Lekin aslida bu unday emas.

Faraz qilaylik, siz Word'da hujjatni 3 soat terdingiz, lekin dastur hujjatni diskda saqlay olmayotganini ishning ikkinchi daqiqasida bilib olishdi. Qaysi biri yaxshiroq – ikki daqiqalik ishni yo'qotish yoki uch soatlik ishingizni?

Agar dastur kerakli narsani qila olmasa, yaxshiroq bo'lsa, u yopilib, hamma narsa joyida ko'rinishda davom etishi mumkin. Dastur mustaqil ravishda hal qila olmasa, xato sodir bo'lganda, foydalanuvchini muammo haqida darhol xabardor qilish kerak bo'lgan eng yaxshi narsa.


3. Istisno hodisalarining tarixi

Qisqa qiyinchiliklar nafaqat dasturlar bilan bog'liq, balki dastur ichidagi metodlar bilan ham bog'liq – masalan:

  • Metod faylni diskka yozishni xohlaydi, lekin joy yo'q.
  • Metod o'zgaruvchida biror funksiyani chaqirmoqchi, lekin o'zgaruvchi == null.
  • Metodda 0 ga bo'lish sodir bo'ldi.

Bunday holda, chaqiruvchi metod ehtimol vaziyatni to'g'rilashi mumkin (muqobil stsenariy bajarilishi mumkin), agar u chaqirilgan metod ishlashi paytida qanday muammo sodir bo'lganini bilsa.

Agar biz faylni diskda saqlamoqchi bo'lsak va bunday fayl allaqachon mavjud bo'lsa, foydalanuvchidan faylni qayta yozish uchun tasdiq so'rash mumkin. Agar diskda joy yo'q bo'lsa, foydalanuvchiga xabar chiqarish va boshqa disk tanlashni taklif qilish mumkin. Agar dastur xotirasi tugagan bo'lsa – favqulodda tugaydi.

Qachondir dasturchilar bu masala haqida o'ylashdi va quyidagi yechimni topdilar: barcha metodlar/funksiyalar o'z ishlash natijasi sifatida xato kodini qaytarishi kerak. Agar funksiya a'lo ishlagan bo'lsa, u 0 qaytaradi, agar yo'q bo'lsa, xato kodini qaytaradi (nol emas).

Bunday yondashuvda DAS elchisi har bir funksiya chaqiruvidan keyin xato sodir bo'lganligini tekshirish uchun qo'shimcha kod yozishi kerak edi. Dastur kodi sezilarli darajada oshdi va quyidagi holatga o'xshadi:

Xatosiz kod Xatoli kod

File file = new File("ca:\\note.txt");
file.writeLine("Текст");
file.close();

File file = new File("ca:\\note.txt");
int status = file.writeLine("Текст");
if (status == 1)
{
   ...
}
else if (status == 2)
{
   ...
}
status = file.close();
if (status == 3)
{
   ...
}

Bundan tashqari, juda ko'p hollarda xato sodir bo'lganini "ko'rgan" funksiya nima qilishni bilmas edi: xatoni chaqiruvchi funktsiyaga qaytarish kerak, va u o'zining chaqiruvchisiga qaytarardi va hokazo.

Katta dasturda funktsiyalarni o'nlab chaqiruvlar zanjiri normal holatdir: ba'zan yuzlab funktsiyalar chaqiruvining chuqurligini ham uchratish mumkin. Va shunday qilib, xato kodini pastdan yuqoriga o'tkazish kerak. Va agar shu yo'lda biror funktsiya xatoni ishlov bermasa, xato yo'qoladi.

Bunday yondashuvning yana bir kamchiligi shundaki, agar funksiya xato kodini qaytarsa, u ishlash natijalarini qaytarolmaydi edi. Hisoblash natijalarini parametrlar orqali berish kerak edi. Bu kodni yana ham murakkablashtirdi va xatoliklar sonini yanada ko'paytirdi.


Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION