Недавно я столкнулся с шаблоном проектирования Null Object, и мои коллеги говорят, что его можно использовать для устранения проверок нулевого указателя, которые встречаются во всем коде.
например, предположим, что класс DAO возвращает информацию о клиенте (в объекте значения, называемом CustomerVO). Мой основной класс должен извлекать firstName и emailId и отправлять электронное письмо клиенту.
...
CustomerVO custVO = CustomerDAO.getCustomer(customerID);
if(custVO != null) { // imp, otherwise we may get null ptr exception in next line
sendEmail(custVO.getFirstName(), custVO.getEmailID());
}
...
Это очень простой пример, но такие проверки на null могут быстро распространиться по коду в зависимости от сложности объектов-значений.
У меня есть две проблемы с проверкой на нуль: они делают код уродливым и трудным для чтения, менее опытные разработчики ставят ненужные проверки на нуль, хотя на самом деле они должны генерировать исключения. например в приведенном выше коде было бы лучше создать исключение из самого getCustomer(), потому что, если он не может найти информацию о клиенте для данного CustID, это означает, что CustID недействителен.
Хорошо, возвращаясь к шаблону нулевого объекта, можем ли мы использовать «нулевой» объект CustomerVO, чтобы скрыть нулевую проверку?
CustomerVO {
String firstName = "";
String emailID = "";
}
Не было бы смысла. Как вы думаете?
И какие вещи вы следуете, чтобы свести к минимуму нулевые проверки в вашем приложении.