Jadi saya tidak tahu apakah ini desain kode yang baik atau buruk, jadi saya pikir saya sebaiknya bertanya.
Saya sering membuat metode yang melakukan pengolahan data yang melibatkan kelas dan saya sering melakukan banyak pemeriksaan dalam metode untuk memastikan saya tidak mendapatkan referensi nol atau kesalahan lain sebelumnya.
Untuk contoh yang sangat mendasar:
// fields and properties
private Entity _someEntity;
public Entity SomeEntity => _someEntity;
public void AssignEntity(Entity entity){
_someEntity = entity;
}
public void SetName(string name)
{
if (_someEntity == null) return; //check to avoid null ref
_someEntity.Name = name;
label.SetText(_someEntity.Name);
}
Jadi seperti yang Anda lihat, saya memeriksa null setiap kali. Tetapi haruskah metode ini tidak memiliki pemeriksaan ini?
Misalnya, kode eksternal harus membersihkan data sebelumnya sehingga metode tidak perlu divalidasi seperti di bawah ini:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
Singkatnya, metode harus "memvalidasi data" dan kemudian melakukan pemrosesan pada data, atau harus dijamin sebelum Anda memanggil metode, dan jika Anda gagal untuk memvalidasi sebelum memanggil metode, itu harus menimbulkan kesalahan (atau menangkap kesalahan)?