Anti-desenleri her duyduğumda başka bir terim hatırlıyorum. Tasarım kokusu.
"Tasarım kokuları, tasarımda temel tasarım ilkelerinin ihlal edildiğini ve tasarım kalitesini olumsuz etkileyen belirli yapılardır." ("Yazılım Tasarım Kokularının Yeniden Düzenlenmesi: Teknik Borcun Yönetilmesi")
İhlal eden tasarım ilkelerine göre sınıflandırılmış birçok tasarım kokusu vardır:
Soyutlama kokuları
Eksik Soyutlama: Bu koku, bir sınıf veya arabirim oluşturmak yerine veri kümeleri veya kodlanmış dizeler kullanıldığında ortaya çıkar.
Emir Kipi Soyutlama: Bu koku bir operasyon sınıfa dönüştürüldüğünde ortaya çıkar.
Eksik Soyutlama: Bu koku, bir soyutlama tamamlayıcı veya birbiriyle ilişkili yöntemleri tamamen desteklemediğinde ortaya çıkar.
Çok Yönlü Soyutlama: Bu koku, bir soyutlamanın kendisine atanmış birden fazla sorumluluğu olduğunda ortaya çıkar.
Gereksiz Soyutlama: Bu koku, aslında gerekli olmayan (ve bundan kaçınılabilen) bir soyutlama bir yazılım tasarımına dahil edildiğinde ortaya çıkar.
Unutilized Abstraction: Bu koku, bir soyutlama kullanılmadan bırakıldığında ortaya çıkar (doğrudan kullanılmaz veya ulaşılamaz).
Yinelenen Soyutlama: Bu koku, iki veya daha fazla soyutlamanın özdeş isimlere veya aynı uygulamaya veya her ikisine birden sahip olması durumunda ortaya çıkar.
Kapsülleme kokuları
Eksik Kapsülleme: Bu koku, bir soyutlamanın bir veya daha fazla üyesinin bildirilen erişilebilirliği, gerçekten gerekenden daha izin vericiyse oluşur.
Sızdıran Kapsülleme: Bu koku, genel bir arayüz aracılığıyla bir soyutlama uygulama ayrıntılarını “ortaya çıkardığında” veya “sızdıysa” ortaya çıkar.
Eksik Kapsülleme: Bu koku, uygulama varyasyonları bir soyutlama veya hiyerarşi içinde kapsüllenmediğinde ortaya çıkar.
Açıklanamayan Kapsülleme: Bu koku, bir hiyerarşi içinde zaten kapsüllenmiş türlerdeki varyasyonlardan yararlanmak yerine, istemci kodu açık tür denetimleri (nesnenin türünü denetleyen zincirlenmiş if-else veya switch deyimlerini kullanarak) kullandığında ortaya çıkar.
Modülerleştirme kokuları
Kırık Modülerleştirme: Bu koku, ideal olarak tek bir soyutlamada lokalize edilmesi gereken veri ve / veya yöntemler ayrıldığında ve birden fazla soyutlamaya yayıldığında ortaya çıkar.
Yetersiz Modülerleştirme: Bu koku tamamen ayrışmamış bir soyutlama olduğunda ortaya çıkar ve başka bir ayrışma boyutunu, uygulama karmaşıklığını veya her ikisini de azaltabilir.
Döngüsel Olarak Bağımlı Modülerleştirme: Bu koku, iki veya daha fazla soyutlamanın doğrudan veya dolaylı olarak birbirine bağlı olması durumunda ortaya çıkar (soyutlamalar arasında sıkı bir bağlantı oluşturur).
Hub Benzeri Modülerleştirme: Bu koku, bir soyutlamanın çok sayıda diğer soyutlama ile bağımlılıkları (hem gelen hem de giden) olduğunda ortaya çıkar.
Hiyerarşi kokuları
Eksik Hiyerarşi: Bu koku, bir kod segmenti, bir hiyerarşinin oluşturulabileceği ve bu varyasyonları kapsüllemek için kullanılabileceği davranıştaki varyasyonu açıkça yönetmek için koşullu mantık (tipik olarak "etiketli türler" ile birlikte) kullandığında ortaya çıkar.
Gereksiz Hiyerarşi: Bu koku tüm miras hiyerarşisi gereksiz olduğunda ortaya çıkar, bu da mirasın belirli bir tasarım bağlamında gereksiz yere uygulandığını gösterir.
Etkisiz Hiyerarşi: Bu koku, bir hiyerarşideki türler arasında gereksiz çoğalma olduğunda ortaya çıkar.
Geniş Hiyerarşi: Bu koku, ara türlerin eksik olabileceğini belirten bir kalıtım hiyerarşisi “çok” geniş olduğunda ortaya çıkar.
Spekülatif Hiyerarşi: Bu koku, bir hiyerarşideki bir veya daha fazla tür spekülatif olarak sağlandığında (yani, gerçek gereksinimler yerine hayal edilen ihtiyaçlara dayanarak) ortaya çıkar.
Derin Hiyerarşi: Bu koku, bir miras hiyerarşisi “aşırı” derin olduğunda ortaya çıkar.
Asi Hiyerarşi: Bu koku, bir alt tip, süper tip (ler) inin sağladığı yöntemleri reddettiğinde ortaya çıkar.
Kırık Hiyerarşi: Bu koku, bir üst tip ve alt tipi kavramsal olarak kırık ikame edilebilirliği ile sonuçlanan bir “IS-A” ilişkisini paylaşmadığında ortaya çıkar.
Çok Yollu Hiyerarşi: Bu koku, bir alt tür hem doğrudan hem de dolaylı olarak hiyerarşide gereksiz kalıtım yollarına yol açan bir üst türden miras kaldığında ortaya çıkar.
Döngüsel Hiyerarşi: Bu koku, bir hiyerarşideki bir üst tür alt türlerinden birine bağlı olduğunda ortaya çıkar.
Yukarıdaki tanım ve sınıflandırma "Yazılım tasarımı kokularını yeniden düzenleme: Teknik borcun yönetimi" bölümünde açıklanmaktadır . Daha alakalı bazı kaynaklar burada bulunabilir .