Ov miltig'ini operatsiya qilish - Shotgun surgery

Bu ov miltig'idagi operatsiyani tasavvur qiladi
Ov miltig'ini operatsiya qilish "A sinfiga" o'zgartirish dasturiy ta'minot tizimidagi boshqa sinflarga bir nechta kichik o'zgarishlarni keltirib chiqarganda ham bo'lishi mumkin.

Ov miltig'ini operatsiya qilish bu antipattern dasturiy ta'minotni ishlab chiqishda va ishlab chiquvchi an funktsiyalarini qo'shganda sodir bo'ladi dastur kodlari bazasi ning ko'pligini qamrab olgan amalga oshiruvchilar yoki amalga oshirish bitta o'zgarishda. Bu ko'plab dasturiy stsenariylarda odatiy holdir, chunki odatda dasturiy aktivlarning qiymatini oshirish uchun yangi xususiyatlarni qo'shish uchun katta miqdordagi dasturiy kuch sarflanadi. Natijada, ushbu yangi xususiyatlar bir vaqtning o'zida bir nechta joylarga kod qo'shishni talab qilishi mumkin, agar kodning o'zi juda o'xshash bo'lsa va faqat ozgina farqlarga ega bo'lsa. Tijorat dasturiy ta'minotni jadal rivojlantirish xususiyati tufayli qayta qurish uchun vaqt etarli bo'lmasligi mumkin (yoki) refaktor ) yangi xususiyatlarni ahamiyatsiz qo'llab-quvvatlovchi tizim. Natijada, amaliyoti kesib oling va joylashtiring kodlash keng tarqalgan; kod bitta joyda yoziladi, so'ngra uni amalga oshirish zarur bo'lgan boshqa barcha joylarga ko'chiriladi (har qanday kerakli o'zgartirishlar amalga oshirilganda).

Ushbu amaliyot odatda qayta ishlash jamoatchiligi tomonidan to'g'ridan-to'g'ri buzilishi sifatida norozilik bildiradi Bir marta va faqat bir marta printsip - oxir-oqibat, yangi funksionallikning har qanday o'zgarishi keng o'zgarishlarni talab qilishi mumkin. Bundan tashqari, ushbu yangi xususiyatdagi har qanday potentsial dasturiy xatolar ko'p marta takrorlanadi va xatolarni tuzatishni ayniqsa qiyin va zerikarli qilishi mumkin. Nusxalangan kod bo'lmasa ham, dasturlar juda o'xshashligi va talablarning o'zgarishiga yoki xatolarni tuzatishga moyil bo'lgani kabi kafolatlanadi. Dasturiy ta'minotni ishlab chiqishning ushbu shakli uzoq muddatli saqlab turish va barqarorlik evaziga qisqa muddatli takomillashtirishni (qo'shimcha funktsiyalar ko'rinishida) afzal ko'radi.

Misol

Ushbu amaliyotning kanonik misoli kirish odatda bir vaqtning o'zida ko'plab funktsiyalarga prolog kodini qo'shadi, masalan:

bekor MyFunc() {  ...}bekor MyFunc2() {  ...}...bekor MyFuncN() {  ...}

Bunga o'zgartirilishi mumkin:

bekor MyFunc() {  printf("MyFunc-ga kirish");  ...}bekor MyFunc2() {  printf("MyFunc2-ga kirish");  ...}...bekor MyFuncN() {  printf("MyFuncN-ga kirish");  ...}

Bu erda bitta talab bir vaqtning o'zida bir nechta funktsiyalarga o'xshash kodni qo'shdi. Shunday qilib, bu erda talablarning har qanday o'zgarishi (ya'ni jurnalga satr raqamlarini qo'shish) endi katta kuch talab qiladi. Ov miltig'i bilan operatsiya qilish, bu ahamiyatsiz misolda ta'kidlanganidek, kesish va joylashtirish kodlash bilan sinonim emas. Kodni nusxalash amaliyotini "maqsadga erishish vositasi" deb qarash mumkin, bu erda ov miltig'idagi jarrohlik shunchaki "oxir" (ya'ni bir xil xulosaga kelishning ko'plab usullari mavjud).

Ov miltig'i operatsiyasining natijalari

Ushbu uslub bilan bog'liq muammolar dasturiy ta'minot tizimidagi har qanday takrorlanish bilan bir xilda; ya'ni bir xil mantiqni ko'p joylarda takrorlash keyinchalik bir xil mantiqqa o'zgartirish kiritish xarajatlarini sezilarli darajada oshirishi mumkin. Yuqorida aytib o'tilgan xarajatlarning bir qismini o'lchash mumkin, boshqalari esa (hech bo'lmaganda ahamiyatsiz emas). Ushbu antipattern yuqori defekt stavkalari bilan o'zaro bog'liqligi haqida ba'zi dalillar mavjud.[1]

Odatda quyidagilarning kombinatsiyasini kutish kerak:

  • Ishlab chiquvchilarning kuchini oshirish va samaradorlikni kamaytirish
  • Yuqoridagilarning birlashtirilgan pul qiymati (tijorat rivojlanishidagi kabi)
  • Kodning psixologik ta'siri va potentsial beparvoligi

Ulardan eng hiyla-nayranglari psixologik ta'sirlardir (masalan, qarang Buzilgan Windows nazariyasi ) eksponent ravishda olib kelishi mumkin dasturiy ta'minot chirishi.[iqtibos kerak ] Nazorat qilinmasa, bu butun kod bazalarini boshqarib bo'lmaydigan holga keltirishi mumkin. Odatda bu muammoning yagona echimi kodni to'liq qayta yozishdir[iqtibos kerak ] (katta narx bo'yicha).

Yumshatish

Aspektga yo'naltirilgan dasturlash (AOP) invaziv modifikatsiyalarning ushbu shakllarini "aspekt" yoki "tashvish" ni qabul qilish foydasiga kamaytirishga qaratilgan. Qarorlar qozon plitasi bir vaqtning o'zida funktsiyalar domenida qo'llanilishi mumkin (jarayoni orqali to'quvchilik ) bu takrorlanadigan kod miqdorini sezilarli darajada kamaytiradi. Dan foydalanish Domenga xos tillar engil vaznli joylarda ham keng tarqalmoqda kompilyatorlar dasturchi nomidan takrorlangan kodning katta qismini yaratish uchun yozilgan. Ikkala usul ham keng toifalarga kiradi kod yaratish va avtomatlashtirish.

Shuningdek qarang

Adabiyotlar

  1. ^ "Ob'ektga yo'naltirilgan dizayndagi yomon hidlarni tekshirish - IEEE konferentsiyasini nashr etish". doi:10.1109 / ITNG.2006.31. S2CID  13107711. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)