GetComplexResult
kullanmak için aşağıdaki sınıfShould sınıf yöntemleri
public class Class1
{
public int A { get; set; }
public int B { get; set; }
public int GetComplexResult()
{
return A + B;
}
}
düşünün parametreleri veya kullanım sınıfı özelliklerini kabul bu sınıfın bir tüketici yöntemini çağırmadan önce A
ve B
ayarlamak bilmek gerekir. GetComplexResult
, sonucunu hesaplamak için birçok özelliğe erişirse, bu, tüketicinin önce tüm uygun özellikleri ayarlamaması durumunda yanlış dönüş değerlerine yol açabilir. Yani bunun yerine
public class Class2
{
public int A { get; set; }
public int B { get; set; }
public int GetComplexResult(int a, int b)
{
return a + b;
}
}
Bu yol gibi bu sınıfı yazabiliriz, GetComplexResult
için bir arayan beklenen dönüş değeri doğru hesaplanır sağlanması gerekli tüm değerlere geçmek zorunda kalır. Ancak, gerekli birçok değer varsa, parametre listesi de büyür ve bu da iyi bir tasarım gibi görünmez. Aynı zamanda, A
, B
ve GetComplexResult
kapsülleme noktalarını tek bir sınıfta kırmak gibi görünüyor. İşini yapmak için sınıfın bir örneğine ihtiyaç duymadığından, GetComplexResult
statik yapmak için bile cazip gelebilirim. Bir sürü statik yöntem yapmak için etrafta dolaşmak istemiyorum.
Bu 2 farklı sınıf oluşturma yolunu açıklayan terimler var mı? Her ikisinin de artıları ve eksileri var gibi görünüyor - anlamadığım bir şey var mı, bana bir yolun diğerinden daha iyi olduğunu söylemeli mi? Birim testi bu seçimi nasıl etkiler?
Her zaman üyelere doğrudan erişmek yerine alıcıları aramayı denerim ve alıcıda boş bir değer döndürürsem, bir ileti kaydederim. Eskiden iddiaları kullandım, ancak daha sonra müşterilerimizin bazılarının üretimde (!) Etkinleştirilmiş iddialarla çalıştığını öğrendik. – TMN