Dizayn hidi - Design smell

Yilda kompyuter dasturlash, dizayn hidlari "dizayndagi asosiy tuzilish tamoyillari buzilganligini va dizayn sifatiga salbiy ta'sir ko'rsatadigan tuzilmalar" dir.[1] "Dizayn hidi" atamasining kelib chiqishini "" atamasi bilan izlash mumkin.kod hidi "bu kitobda ko'rsatilgan Qayta ishlash: Mavjud kodni takomillashtirish tomonidan Martin Fauler.[2]

Tafsilotlar

Turli mualliflar "hid" so'ziga turli xil ta'rif berishgan:

  • N. Moha va boshq.: "Kod va dizayn hidlari - bu takrorlanadigan dastur va dizayn muammolarini hal qilishning yomon echimi."[3]
  • R. C. Martin: "Dizayn hidlari chirigan dasturlarning hididir".[4]
  • Fowler: "Xidlar - bu kodni qayta tuzish imkoniyatini taklif qiladigan (ba'zida ular qichqiradi) ma'lum tuzilmalar."[2]

Dizayn hidlari to'plangan dizayn qarzini bildiradi (eng muhim o'lchamlaridan biri texnik qarz ). Xatolar yoki bajarilmagan xususiyatlar dizayn hidlari sifatida hisobga olinmaydi. Dizayn hidlari dizaynni zaif va parvarish qilishni qiyinlashtiradigan noto'g'ri dizayn qarorlaridan kelib chiqadi. Texnik qarz yig'ilib qolmasligi uchun dasturiy ta'minot tizimidagi dizayn hidlarini aniqlash va uni yo'q qilish uchun tegishli qayta ishlashni qo'llash yaxshi amaliyotdir.

Kontekst (mavjud muammo, dizayn eko-tizimi va platformasi kabi turli xil omillar bilan tavsiflanadi) ma'lum bir tuzilma yoki qarorni dizayn hidi deb hisoblash kerakligini hal qilishda muhim rol o'ynaydi. Odatda, kontekst tomonidan cheklanganligi sababli dizayn hidlari bilan yashash maqsadga muvofiqdir.

Umumiy dizayn hidlari

  • Abstrakt etishmayapti[1] abstraktsiya yaratish o'rniga ma'lumotlar to'plamlari yoki kodlangan satrlar ishlatilganda. "Ibtidoiy obsesyon" nomi bilan ham tanilgan [2] va "ma'lumotlar to'plamlari".[2]
  • Ko'p qirrali abstraktsiya[1] abstraktsiyaning zimmasiga bir nechta mas'uliyat yuklanganda. Shuningdek, "kontseptsiyalashni suiiste'mol qilish" deb nomlanadi.[5]
  • Ikki nusxadagi abstraktsiya[1] ikki yoki undan ortiq abstraktsiyalar bir xil nomga ega bo'lsa yoki amalga oshirish yoki ikkalasi ham. Shuningdek, "turli xil interfeyslarga ega muqobil sinflar" nomi bilan ham tanilgan[2] va "ikki nusxadagi dizayn artefaktlari".[6]
  • Kamomadli inkapsulyatsiya[1] abstraktsiyaning bir yoki bir nechta a'zolarining e'lon qilingan kirish huquqi talab qilinganidan ko'ra ko'proq ruxsat etilgan bo'lsa.
  • Ishlatilmagan kapsula[1] mijoz kodi allaqachon ierarxiya ichida qamrab olingan turlarning o'zgarishini ishlatish o'rniga aniq turdagi tekshiruvlardan (ob'ektning turini tekshiradigan zanjirlangan if-else yoki switch so'zlaridan foydalangan holda) foydalanganda.
  • Buzilgan modulizatsiya[1] ideal ravishda bitta abstraktsiyaga joylashtirilgan bo'lishi kerak bo'lgan ma'lumotlar va / yoki usullar ajratilganda va bir nechta abstraktsiyalarga tarqalganda.
  • Modulizatsiya etarli emas[1] to'liq ajralmagan abstraktsiya mavjud bo'lganda va keyingi parchalanish uning hajmini, bajarilish murakkabligini yoki ikkalasini kamaytirishi mumkin.
  • Dumaloq qaramlik. Tsiklikka bog'liq modullash [1] ikki yoki undan ortiq abstraktlar bir-biriga bevosita yoki bilvosita bog'liq bo'lganda (abstraktsiyalar o'rtasida qattiq bog'lanishni yaratish). Shuningdek, "tsiklik bog'liqliklar" deb nomlanadi.[7]. Tsiklik iyerarxiya [1] ierarxiyadagi supertip uning har qanday kichik turiga bog'liq bo'lganda. Shuningdek, "merosxo'rlik / mos yozuvlar davrlari" deb nomlanadi.[8]
  • Ta'riflanmagan iyerarxiya[1] ierarxiyadagi turlar orasida keraksiz takrorlanish mavjud bo'lganda.
  • Buzilgan iyerarxiya[1] agar supertip va uning pastki turi kontseptual ravishda "IS-A" munosabatini taqsimlamasa, natijada almashinish buziladi. Shuningdek, "merosdan noo'rin foydalanish" nomi bilan ham tanilgan[9] va "IS A noto'g'ri ishlatish".[10]

Shuningdek qarang

Adabiyotlar

  1. ^ a b v d e f g h men j k l Girish Suryanarayana, Ganesh SG, Tushar Sharma (2014). "Dasturiy ta'minotni hidini qayta ishlash: texnik qarzni boshqarish". Morgan Kaufmann. ISBN  978-0128013977
  2. ^ a b v d e Fowler, Martin (1999). Qayta ishlash. Mavjud kodni loyihalashni takomillashtirish. Addison-Uesli. ISBN  0-201-48567-2.
  3. ^ N. Moha, Y. Gueheneuc, L. Dyuchien va A. Le Meur. "Dekor: Kod va dizayn hidlarini aniqlash va aniqlash usuli". IEEE Trans. Dasturiy ta'minot. Ing., 36 (1): 20-36, yanvar, 2010 yil.
  4. ^ R. C. Martin. Tezkor dasturiy ta'minotni ishlab chiqish, printsiplari, naqshlari va amaliyoti. Addison-Uesli, 2003 yil.
  5. ^ Trifu A. "Ob'ektga yo'naltirilgan kodni qayta qurish asosida avtomatlashtirilgan strategiya". Dasturiy injiniring (WSR) bo'yicha Germaniyaning 7-seminari materiallarida; 2005 yil.
  6. ^ Stal M. "Dastur arxitekturasini qayta ishlash". Ob'ektga yo'naltirilgan dasturlash, tizimlar, tillar va ilovalar bo'yicha xalqaro konferentsiyada qo'llanma (OOPSLA); 2007 yil.
  7. ^ Page-Jones M. "Tuzilgan tizimlarni loyihalash bo'yicha amaliy qo'llanma". 2-nashr. Prentice Hall; 1988 yil.
  8. ^ Sefika M, Sane A, Kempbell RH. "Dasturiy ta'minot tizimining uning yuqori darajadagi dizayn modellariga muvofiqligini nazorat qilish". Dasturiy ta'minot muhandisligi bo'yicha 18-xalqaro konferentsiya materiallari, ICSE ‘96, Vashington, DC; 1996. p. 387-96.
  9. ^ Budd T. "Ob'ektga yo'naltirilgan dasturlash uchun kirish". 3-nashr. Addison Uesli; 2001 yil.
  10. ^ Page-Jones M. "UML-da ob'ektga yo'naltirilgan dizayn asoslari". Addison-Uesli Professional; 1999 yil.