Saya berdebat dengan kolega programmer mengenai apakah ini merupakan praktik yang baik atau buruk untuk memodifikasi kode yang berfungsi hanya untuk membuatnya dapat diuji (melalui unit test misalnya).
Pendapat saya adalah tidak apa-apa, dalam batas-batas menjaga orientasi objek yang baik dan praktik rekayasa perangkat lunak tentu saja (tidak "membuat semuanya publik", dll).
Pendapat kolega saya adalah bahwa memodifikasi kode (yang berfungsi) hanya untuk tujuan pengujian adalah salah.
Hanya sebuah contoh sederhana, pikirkan potongan kode ini yang digunakan oleh beberapa komponen (ditulis dalam C #):
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).
}
}
Saya telah menyarankan bahwa kode ini dapat dimodifikasi untuk memanggil metode lain yang akan melakukan pekerjaan yang sebenarnya:
public void DoSomething(Assembly asm)
{
// not relying on Assembly.GetExecutingAssembly() anymore...
}
Metode ini menggunakan objek Majelis untuk dikerjakan, memungkinkan untuk melewati Majelis Anda sendiri untuk melakukan pengujian. Kolega saya tidak menganggap ini praktik yang baik.
Apa yang dianggap sebagai praktik yang baik dan umum?
Type
parameter, bukanAssembly
.