Refactoring — bu mavjud kodlar majmuasini qayta tuzish, tashqi tuzilishini o’zgartirmasdan ichki tuzilishini o’zgartirish uchun ajoyib texnologiya. Bu funksiyalarni tranformatsiya (funksiyaning vazifasi o’zgarmaydi, balki bajarish
15 Фаулер M. Рефакторинг: улучшение существующего кода. - Пер. с англ. - СПб: Символ Плюс, 2003.
usuli o’zgaradi. Masalan, bank tranformatsiyasi deganda, bank qiladigan funksiyalar o’zgarmaydi, lekin uslub o’zgaradi) qilish va algoritmlarni qayta ko’rib chiqish orqali ichki kod tuzilishini yaxshilaydi. Bu takroriy jarayon. Refactoringa qamrov(scope)ni qisqartirish, murakkab ko’rsatmalarni oddiylashtirish va bir nechta bayonot(statement)larni bitta bayonotga birlashtirish kiradi. Kodni refactoring texnikasi orqali qayta ishlash, uni o’zgartirish, bajarish va yuklab olish jarayonini tezlashtiradi. Hosildorligini(productivity) oshirishni xohlaydigan dasturchilar uchun bu eng yaxshi amaliyotdir.
Martin Fauler refaktoring qilish uchun to’rtta asosiy sababini aytib o’tdi. Refactoring dasturiy ta’minot dizaynini yaxshilaydi, dasturiy ta’minotni tushunishni osonlashtiradi, xatolarni topishga yordam beradi va dasturni tezroq bajarilishiga yordam beradi. Refactoringning qo’shimcha foydasi bor. Refactoringsiz, dasturchi dastur haqida o’ylash tarzini o’zgartiradi. Refactoringning quyidagi 3 ta turi mavjud16:
Kodni qayta ishlash: Bu dasturning manba kodini qayta ishlash.
Ma’lumotlar bazasini qayta tuzish: bu ma’lumotlar bazasini o’zgartirish, bu uning axborot semantikasini saqlab, dizaynini yaxshilaydi.
Foydalanuvchi interfeysi (UI)ni qayta tuzilish: bu foydalanuvchi interfeysi uchun oddiy o’zgarish bo’lib, uning semantikasini saqlab qoladi.
Refactoring bizga quyidagi qulayliklarni beradi: dasturiy ta’minotning dizaynini yaxshilaydi, dasturiy ta’minotni tushunishni osonlashtiradi, dasturiy ta’minot xatolarni topishda va tezroq dasturlashda yordam beradi. Dasturlashda juda foydali bo’lgan bir gap bor – «If it ain’t broken, don’t fix it» («Agar nimadir buzilmagan bo’lsa, uni sozlamang«).
Shunday holatlar bo’ladiki, dasturning ishlab turishiga asos bo’lgan kodni ko’rganingizda uni yaxshiroq usulda qayta yozgingiz keladi. Aslida esa dastur buzilmagan, qanday ishlashi kerak bo’lsa shunday ishlab turgan bo’ladi. Bunday holatda agar «ishlab turgan kodga tegmaslik» tamoyiliga amal qilsak, kodni o’z
16 Фаулер M. Рефакторинг: улучшение существующего кода. - Пер. с англ. - СПб: Символ Плюс, 2003.
holatida qoldirishimiz va ishlab turgan dasturni sozlashga urinmasligimiz kerak.
Foydasi: Agar ishlab turgan kodga tegmasak, ko’p vaqtimizni tejab qolgan bo’lamiz. Chunki dastur shu holatda ham ishlab turibdi, uning buzilmagan kodini sozlaganimizdan keyin ham ishlab turaveradi. Albatta, avvalgiga nisbatan optimalroq ishlay boshlashi mumkin. Ammo oldindan ko’rilmagan muammolar kelib chiqmasligini hisobga olsak, ishlab turgan kodga tegmaganimiz ma’qul.
Zarari: Yuqorida aytilganidek, dastur ishlab turganligiga qaramasdan uni yanada optimallashtirish mumkin. Dastur hozirgiga nisbatan yaxshiroq, yengilroq, samaraliroq ishlasa, buning nimasi yomon? Bundan tashqari kodi yaxshilangan dastur ustida keyinchalik boshqa dasturchilar ish olib borishsa, ularning kodga tushunishlari ancha osonlashishi mumkin.
Refactoring nima? Yuqorida yozilgan holatning aksi, ya’ni ishlab turgan dasturni sozlashga urinish, uning kodidagi kamchiliklarni tuzatish va optimallashtirish refactoringga misol bo’lishi mumkin. Refactoring bilan shug’ullanishni yaxshi ko’ruvchi dasturchilar boshqa dasturchilar hayotini osonlashtiradi. Refactor (qayta ishlab chiqish) – kodning o’qilishi, yengil ishlashi va har tomonlama ijobiy tomonga o’zgarishini ta’minlaydi.
Foydasi: Refactoringdan o’tgan dastur (odatda) avvalgiga nisbatan yaxshiroq ishlaydi. Shu jihati dasturdan foydalanuvchilarga sezilishi mumkin. Dasturchilar uchun esa refactoringdan o’tgan kod ancha oson o’qilishi, optimal usulda yozilganligi bilan ma’qul keladi.
Zarari: Ba’zan refactoringdan so’ng dastur avval qanday ishlagan bo’lsa shunday ishlayveradi. Uning ishida hech qanday optimallashish kuzatilmaydi. Vaziyat yomon tus olganda esa dasturda avval kuzatilmagan ba’zi muammolar ham paydo bo’lib qolishi mumkin. Bundan tashqari natijasi sezilmagan ish uchun dasturchi ancha vaqt sarflaydi. Shu jihatlarini hisobga olsak, refactoring dasturchi uchun vaqtni behuda o’tkazishdek bo’lib ko’rinadi.
Siz dasturchi sifatida qaysi yo’lni tanlashingiz faqat o’zingizga bog’liq. Menimcha, aynan yuqorida berilgan fikrlarga aloqador holatda dasturchining qaysi usulda ish yuritishi uning odatiy hayotdagi xarakteriga bog’liq. Bo’sh vaqtingiz ko’p
bo’lsa, boshqa kerakliroq ish Sizni kutib turmagan bo’lsa refactoring bilan shug’ullanishingiz mumkin. Tig’iz vaqt rejimida ishlayotgan dasturchilar esa odatda ishlab turgan kodni zaruratsiz o’zgartirishmaydi.
Refaktoring yoki kodni qayta loyihalash va konstruktsiyalsh, kodni qayta ishlash, algoritmlarning o’zgarishi bilan ekvivalent - dasturning tashqi xatti- harakatlariga ta’sir qilmaydigan va uning ishini tushunishni osonlashtirishga qaratilgan ichki strukturasini o’zgartirish jarayoni. Refaktoring bir qator kichik, ekvivalent (ya’ni xatti-harakatni saqlaydigan) o’zgarishlarga asoslanadi. Har bir o’zgarish kichik bo’lganligi sababli, dasturchi uchun uning to’g’riligini kuzatish osonroq bo’ladi va shu bilan birga, butun ketma-ketlik dasturni sezilarli darajada qayta konstrutsiyalashga olib kelishi va uning izchilligi va ravshanligini oshirishi mumkin.
Refaktoring – bu dasturning tashqi xulq-atvoriga ta’sir qilmasdan ichki strukturasini o’zgartirish jarayonidir. Bunda asosiy maqsadlardan biri dastur ishini tushunishni osonlashtirishdir. Dastur konstruktsiyasiga oson kuzatib borish imkonini beruvchi kichik o’zgarishlar qilinadi. Refaktoring zarurligining sabablari:
Dastur kodining takrorlanishi;
Uzun usul;
Katta sinf;
Parametrlarning uzun ro’yhati;
Boshqa obyekt ma’lumotlariga tez-tez murojaat qiluvchi metodlar;
Ortiqcha vaqtinchalik o’zgaruvchilar;
Ma’lumotlar sinflari;
Guruhlanmagan ma’lumotlar.
Dasturiy ta’minot reinjiniringi - bu ishlayotgan dasturiy ta’minotdan foydalanib, yangi funksionallikni yaratish yoki katta o’zgarishlar orqali xatolarni yo’q qilish jarayoni. Chikovski va Kross 1990 yilgi maqolalarida reinjiniring jarayonini “Tizimni yangi shaklda qayta tiklash uchun tekshirish va o’zgartirish” deb ta’riflab berishgan. Kamroq rasmiy ravishda aytganda, reinjiniring - bu dasturiy inginiring jarayonidan so’ng teskari ravishda dasturiy ta’minot tizimini o’zgarishdir.
Do'stlaringiz bilan baham: |