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 Clientproperti harus selalu disetel (yaitu bukan nol) sehingga Client == nulltidak akan pernah terjadi dan nilai Id 0menunjukkan ID palsu pula (ini adalah pendapat penulis kode ;-))
2) Anda tidak dapat bergantung pada penelepon untuk mengetahui bahwa itu 0adalah nilai yang salah untuk Iddan ketika Clientproperti harus selalu disetel Anda harus memasukkan exceptionnilai getketika Clientproperti tersebut bernilai nol.
3) Ketika Clientproperti harus selalu disetel, Anda hanya kembali Client.Iddan membiarkan kode tersebut memberikan NullRefpengecualian ketika Clientproperti tersebut bernilai nol.
Manakah dari ini yang paling benar? Atau apakah ada kemungkinan keempat?