ดังนั้นฉันไม่รู้ว่านี่เป็นการออกแบบรหัสที่ดีหรือไม่ดีดังนั้นฉันจึงคิดว่าฉันควรถาม
ฉันมักจะสร้างวิธีการที่ทำการประมวลผลข้อมูลที่เกี่ยวข้องกับคลาสและฉันมักจะตรวจสอบวิธีการต่าง ๆ มากมายเพื่อให้แน่ใจว่าฉันจะไม่ได้รับการอ้างอิงเป็นโมฆะหรือข้อผิดพลาดอื่น ๆ ก่อนถึงมือ
สำหรับตัวอย่างพื้นฐานมาก:
// 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);
}
ดังนั้นคุณจะเห็นการตรวจสอบ im สำหรับ null ทุกครั้ง แต่วิธีการนี้ควรไม่มีเช็คนี้หรือไม่?
ตัวอย่างเช่นควรโค้ดภายนอกทำความสะอาดข้อมูลก่อนมือดังนั้นวิธีการไม่จำเป็นต้องตรวจสอบเช่นด้านล่าง:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
โดยสรุปควรเป็นวิธีการ "ตรวจสอบข้อมูล" แล้วทำการประมวลผลข้อมูลหรือควรรับประกันก่อนที่คุณจะเรียกวิธีการและถ้าคุณล้มเหลวในการตรวจสอบก่อนที่จะเรียกวิธีการก็ควรโยนข้อผิดพลาด (หรือจับ ข้อผิดพลาด)?