Kami memiliki kode ini yang, ketika disederhanakan, terlihat seperti ini:
public class Room
{
public Client Client { get; set; }
public long ClientId
{
get
{
return Client == null ? 0 : Client.Id;
}
}
}
public class Client
{
public long Id { get; set; }
}
Sekarang kami memiliki tiga sudut pandang.
1) Ini adalah kode yang baik karena Client
properti harus selalu disetel (yaitu bukan nol) sehingga Client == null
tidak akan pernah terjadi dan nilai Id 0
menunjukkan ID palsu pula (ini adalah pendapat penulis kode ;-))
2) Anda tidak dapat bergantung pada penelepon untuk mengetahui bahwa itu 0
adalah nilai yang salah untuk Id
dan ketika Client
properti harus selalu disetel Anda harus memasukkan exception
nilai get
ketika Client
properti tersebut bernilai nol.
3) Ketika Client
properti harus selalu disetel, Anda hanya kembali Client.Id
dan membiarkan kode tersebut memberikan NullRef
pengecualian ketika Client
properti tersebut bernilai nol.
Manakah dari ini yang paling benar? Atau apakah ada kemungkinan keempat?