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

  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • infodirt

    infodirt

    11 Mart 2009