SORU
6 EKİM 2011, PERŞEMBE


Bu kötü uygulama adı anti-desen / nedir?

Bu kötü bir uygulama olduğunu neden takımıma anlatmaya çalışıyorum, ve anti-desen başvurusu için benim açıklamam yardımcı arıyorum. Bu çok büyük bir kurumsal bir uygulama olduğunu, burada uygulanan ne olduğunu göstermek için basit bir örnek:

public void ControlStuff()
    {
        var listOfThings = LoadThings();
        var listOfThingsThatSupportX = new string[] {"ThingA","ThingB", "ThingC"};
        foreach (var thing in listOfThings)
        {
            if(listOfThingsThatSupportX.Contains(thing.Name))
            {
                DoSomething();
            }
        }
    }

Biz 'Şeyler Şeyi alt sınıfı söz konusu işlevi uygulamak gerekir, çünkü. eğer X destekliyorsa bize temel sınıf için bir özellik eklemek öneriyorum Şöyle bir şey:

public void ControlStuff()
    {
        var listOfThings = LoadThings();
        foreach (var thing in listOfThings)
        {
            if (thing.SupportsX)
            {
                DoSomething();
            }
        }
    }
class ThingBase
{
    public virtual bool SupportsX { get { return false; } }
}
class ThingA : ThingBase
{
    public override bool SupportsX { get { return true; } }
}
class ThingB : ThingBase
{
}

İlk yaklaşım kötü bir uygulama olduğunu neden bu apaçık ortada, ama bu adı ne? Ayrıca, bir desen söylüyorum bir daha bu sorun için daha uygun olduğunu?

CEVAP
6 EKİM 2011, PERŞEMBE


Normalde daha iyi bir yaklaşım (IMHO) miras yerine arayüzleri kullanmak olacaktır

sonra nesne arabirimi uygulanan olup olmadığını kontrol meselesidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • Influencer Plus

    Influencer P

    2 Ocak 2013