Bir programcı meslektaşımla birlikte çalışan bir kod parçasını sadece test edilebilir hale getirmek için değiştirmenin iyi mi yoksa kötü bir uygulama mı olduğu konusunda tartışmalıyım (örneğin, birim testleri aracılığıyla).
Benim fikrim elbette, iyi nesneye yönelik ve tabii ki yazılım mühendisliği uygulamalarını sürdürme sınırları dahilinde ("her şeyi halka açık yapma" değil).
Meslektaşımın görüşü, yalnızca test amaçlı olarak kodun (çalışan) değiştirilmesinin yanlış olduğu yönünde.
Sadece basit bir örnek, bazı bileşenler tarafından kullanılan bu kod parçasını düşünün (C # ile yazılmış):
public void DoSomethingOnAllTypes()
{
var types = Assembly.GetExecutingAssembly().GetTypes();
foreach (var currentType in types)
{
// do something with this type (e.g: read it's attributes, process, etc).
}
}
Bu kodun asıl işi yapacak başka bir yöntemi çağırmak için değiştirilebileceğini önerdim:
public void DoSomething(Assembly asm)
{
// not relying on Assembly.GetExecutingAssembly() anymore...
}
Bu yöntem üzerinde çalışmak için bir Assembly nesnesini alır ve testin yapılması için kendi Meclisinizi geçmenizi mümkün kılar. Meslektaşım bunun iyi bir uygulama olduğunu düşünmedi.
İyi ve yaygın bir uygulama olarak neler kabul edilir?
Type
, bir parametre olarak almalıdırAssembly
.