Masalah umum dalam bahasa apa pun adalah menyatakan bahwa parameter yang dikirim ke suatu metode memenuhi persyaratan Anda, dan jika tidak, akan mengirimkan pesan kesalahan yang bagus dan informatif. Kode semacam ini diulangi berulang kali, dan kami sering mencoba membuat pembantu untuk kode tersebut. Namun, dalam C#, tampaknya para pembantu tersebut dipaksa untuk menangani beberapa duplikasi yang dipaksakan kepada kita oleh bahasa dan kompiler. Untuk menunjukkan apa yang saya maksud, izinkan saya menyajikan beberapa kode mentah tanpa pembantu, diikuti oleh satu kemungkinan pembantu. Kemudian, saya akan menunjukkan duplikasi di helper dan mengutarakan pertanyaan saya dengan tepat.
Pertama, kode tanpa bantuan apa pun:
public void SomeMethod(string firstName, string lastName, int age)
{
if(firstName == null)
{
throw new WhateverException("The value for firstName cannot be null.");
}
if(lastName == null)
{
throw new WhateverException("The value for lastName cannot be null.");
}
// Same kind of code for age, making sure it is a reasonable range (< 150, for example).
// You get the idea
}
}
Sekarang, kode dengan upaya yang masuk akal sebagai pembantu:
public void SomeMethod(string firstName, string lastName, int age)
{
Helper.Validate( x=> x !=null, "firstName", firstName);
Helper.Validate( x=> x!= null, "lastName", lastName);
}
Pertanyaan utamanya adalah ini: Perhatikan bagaimana kode harus meneruskan nilai parameter dan nama parameter ("firstName" dan nama depan). Hal ini agar pesan kesalahan dapat mengatakan, "Blah bla bla nilai parameter firstName." Sudahkah Anda menemukan cara untuk menyiasatinya menggunakan refleksi atau apa pun? Atau cara untuk mengurangi rasa sakitnya?
Dan yang lebih umum, apakah Anda menemukan cara lain untuk menyederhanakan tugas memvalidasi parameter sekaligus mengurangi duplikasi kode?
EDIT: Saya telah membaca orang berbicara tentang memanfaatkan properti Parameter, tetapi tidak pernah menemukan cara untuk mengatasi duplikasi tersebut. Adakah yang beruntung dengan itu?
Terima kasih!
ApplicationException
tidak disarankan. - person mmx   schedule 21.03.2009ApplicationException
tidak disarankan. Lihat bagian Keterangan di sini, khususnya paragraf kedua: msdn.microsoft.com /en-us/library/ - person Ryan Lundy   schedule 14.12.2009