Тому я не знаю, чи це добре, чи погано дизайн коду, тому я подумав, що краще запитати.
Я часто створюю методи, що займаються обробкою даних за участю класів, і я часто роблю багато перевірок у методах, щоб переконатися, що я не отримую нульових посилань або інших помилок перед рукою.
Для дуже базового прикладу:
// 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);
}
Отже, як ви можете бачити щоразу перевірку нуля. Але чи повинен метод не мати цієї перевірки?
Наприклад, чи повинен зовнішній код очистити дані перед рукою, щоб методи не потребували перевірки, як показано нижче:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
Якщо підсумовувати, чи повинні методи "перевірити дані", а потім зробити їх обробку даних, чи це слід гарантувати перед тим, як викликати метод, і якщо ви не отримаєте перевірку перед викликом методу, він повинен видати помилку (або зафіксувати запит помилка)?