ปัญหาทั่วไปในภาษาใดก็ตามคือการยืนยันว่าพารามิเตอร์ที่ส่งไปยังวิธีการนั้นตรงตามความต้องการของคุณ และหากไม่ตรง ก็ให้ส่งข้อความแสดงข้อผิดพลาดที่ให้ข้อมูลที่เป็นประโยชน์ โค้ดประเภทนี้เกิดขึ้นซ้ำแล้วซ้ำอีก และเรามักจะพยายามสร้างตัวช่วยสำหรับโค้ดดังกล่าว อย่างไรก็ตาม ใน C# ดูเหมือนว่าผู้ช่วยเหล่านั้นจะถูกบังคับให้จัดการกับความซ้ำซ้อนที่บังคับโดยภาษาและคอมไพเลอร์ เพื่อแสดงสิ่งที่ฉันหมายถึง ให้ฉันนำเสนอโค้ดดิบที่ไม่มีตัวช่วย ตามด้วยตัวช่วยที่เป็นไปได้หนึ่งตัว จากนั้น ฉันจะชี้ให้เห็นความซ้ำซ้อนในตัวช่วยและตอบคำถามของฉันอย่างแม่นยำ
ขั้นแรก โค้ดที่ไม่มีตัวช่วย:
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
}
}
ตอนนี้ รหัสพยายามช่วยเหลืออย่างสมเหตุสมผล:
public void SomeMethod(string firstName, string lastName, int age)
{
Helper.Validate( x=> x !=null, "firstName", firstName);
Helper.Validate( x=> x!= null, "lastName", lastName);
}
คำถามหลักคือ: สังเกตว่าโค้ดต้องส่งค่าของพารามิเตอร์ และ ชื่อของพารามิเตอร์ ("firstName" และ อย่างไร ชื่อจริง). ทั้งนี้เพื่อให้ข้อความแสดงข้อผิดพลาดสามารถแจ้งว่า "บลา บลา บลา ค่าสำหรับพารามิเตอร์ ชื่อแรก" คุณพบวิธีที่จะแก้ไขปัญหานี้โดยใช้การไตร่ตรองหรือสิ่งอื่นใดหรือไม่? หรือมีวิธีทำให้เจ็บน้อยลง?
โดยทั่วไปแล้ว คุณพบวิธีอื่นใดในการปรับปรุงงานตรวจสอบพารามิเตอร์ในขณะที่ลดการทำซ้ำโค้ดหรือไม่
แก้ไข: ฉันได้อ่านผู้คนที่พูดถึงการใช้คุณสมบัติพารามิเตอร์ แต่ไม่เคยพบวิธีแก้ไขการทำซ้ำเลย มีใครโชคดีกับสิ่งนั้นบ้างไหม?
ขอบคุณ!
ApplicationException
- person mmx   schedule 21.03.2009ApplicationException
ดูส่วนหมายเหตุที่นี่ โดยเฉพาะย่อหน้าที่สอง: msdn.microsoft.com /en-us/library/ - person Ryan Lundy   schedule 14.12.2009