bayonot) hamma hollarda ham bajarilmasligi mumkin. Standart Paskal va Seed7 kabi qaytish bayonoti bo'lmagan tillarda bunday muammo yo'q.
Aksariyat zamonaviy tillar bunday oqishlarning oldini olish uchun til darajasida yordam beradi;[8] resurslarni boshqarish boʻlimida batafsil muhokamaga qarang. Ko'pincha, bu blokdan chiqqanda ma'lum kod ishga tushishini kafolatlaydigan bo'shatish himoyasi orqali amalga oshiriladi; bu
tozalash blokiga ega bo'lgan tizimli muqobil va. Bu ko'pincha deb nomlanadi
va istisnolarni qayta ishlashning bir qismi hisoblanadi. Ko'p bo'lsa
istisnosiz int roducing bayonotlari ko'rinishi mumkin
g'alati. Resurslarni boshqarishning turli usullari mavjud. Muqobil yondashuv, Asosan C++ da topilgan Resource Acquisition Is Init ializat ion boʻlib, u resurslarni taqsimlash uchun mahalliy oʻzgaruvchilar boʻyicha destruktorlarni chaqirish uchun funktsiyadan chiqishda oddiy stekni yechish (oʻzgaruvchini ajratish)dan foydalanadi.
Kent Bek, Martin Fauler va hammualliflar o'zlarining refaktoring kitoblarida, qo'riqchi bandlari tomonidan belgilab qo'yilgan bir nechta chiqishlardan foydalangan holda, ma'lum bir turdagi tekislash strukturasiga qaraganda, ichki o'rnatilgan shartlarni tushunish qiyinroq bo'lishi mumkinligini ta'kidladilar. Ularning 2009-yilgi kitobida "bitta chiqish nuqtasi haqiqatan ham foydali qoida emas. Aniqlik asosiy printsipdir: Agar usul bitta chiqish nuqtasi bilan aniqroq bo'lsa, bitta chiqish nuqtasidan foydalaning; aks holda qilmang ". Ular faqat ichki shartli shartlardan iborat funktsiyani himoyalangan qaytarish (yoki otish) bayonotlari ketma-ketligiga, keyin esa umumiy holat uchun kodni o'z ichiga olgan yagona qo'riqlanmagan blokga o'zgartirish uchun oshxona kitobi yechimini taklif qiladilar, himoyalangan bayonotlar esa. kamroq tarqalgan (yoki xatolar) bilan shug'ullanishi kerak. Herb Sutter va Andrey Aleksandresku ham o'zlarining 2004 yildagi C++ t ips kitoblarida bitta chiqish nuqtasi eskirgan talab ekanligini ta'kidlaydilar.
Devid Vatt o'zining 2004 yildagi darsligida "bir martalik ko'p chiqishli boshqaruv oqimlari ko'pincha maqsadga muvofiqdir" deb yozadi. Tennentning sekvenserning asosli tushunchasidan foydalangan holda, Vatt zamonaviy dasturlash tillarida mavjud bo'lgan nazorat oqimi konstruksiyalarini bir xilda tavsiflaydi va ko'p chiqishli boshqaruv oqimlari kontekstida nima uchun ma'lum turdagi sekvenserlar boshqalardan afzalroq ekanligini tushuntirishga harakat qiladi. Vattning yozishicha, cheklanmagan gotos (sakrash sekvenserlari) yomon, chunki oʻquvchi sakrash maqsadi boʻlgan haqiqiy yorliqni yoki manzilni topmaguncha va tekshirmaguncha, sakrashning maqsadi dastur oʻquvchisi uchun oʻzini oʻzi tushunib boʻlmaydi. Bundan farqli o'laroq, Vatt ta'kidlaydi
Qaytish sekvenserining kontseptual maqsadi uning maqsadini o'rganmasdan turib, uning kontekstidan aniq. Vattning yozishicha, “matnni qamrab oluvchi buyruq yoki protsedurani bajarishni tugatuvchi ketma-ketlik” sifatida aniqlangan qochish sekvenserlari deb nomlanuvchi sekvenserlar sinfi tsikllardan uzilishlarni (shu jumladan, koʻp darajali tanaffuslarni) va qaytarish bayonotlarini oʻz ichiga oladi. Vatt shuningdek, o'tish sekvenserlari (gotos) C kabi tillarda biroz cheklangan bo'lsa-da, maqsad mahalliy blok ichida yoki o'z ichiga olgan tashqi blok bo'lishi kerakligini ta'kidlaydi.
Faqatgina cheklashning o'zi S tilidagi gotolarning maqsadini o'zini-o'zi ta'riflash uchun etarli emas va shuning uchun ular hali ham "spagetti kodini" ishlab chiqarishlari mumkin. Vatt, shuningdek, istisno sekvenserlari qochish va o'tish sekvenserlaridan qanday farq qilishini tekshiradi; Bu san'atning keyingi bo'limida tushuntirilgan.
Do'stlaringiz bilan baham: |