В последнее время я столкнулся с шаблоном проектирования нулевого объекта, и мои коллеги говорят, что его можно использовать для устранения проверок нулевого указателя, которые встречаются во всем коде.
Например, предположим, что класс 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 могут быстро распространяться по вашему коду в зависимости от сложности объектов значений.
У меня две проблемы с нулевой проверкой,
В последнее время я столкнулся с шаблоном проектирования «нулевой объект», и мои коллеги говорят, что его можно использовать для устранения проверок нулевого указателя, которые встречаются во всем коде.
Например, предположим, что класс 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 могут быстро распространяться по вашему коду в зависимости от сложности объектов значений.
У меня две проблемы с нулевой проверкой,
В последнее время я столкнулся с шаблоном проектирования «нулевой объект», и мои коллеги говорят, что его можно использовать для устранения проверок нулевого указателя, которые встречаются во всем коде.
Например, предположим, что класс 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 могут быстро распространяться по вашему коду в зависимости от сложности объектов значений.
У меня две проблемы с нулевой проверкой, Мой основной класс должен извлекать 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 могут быстро распространяться по вашему коду в зависимости от сложности объектов значений.
У меня две проблемы с нулевой проверкой, Мой основной класс должен извлекать 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 могут быстро распространяться по вашему коду в зависимости от сложности объектов значений.
У меня две проблемы с нулевой проверкой, - они делают код уродливым и трудным для чтения - менее опытные разработчики помещают ненужные проверки на null, когда на самом деле они должны генерировать исключения. например, в приведенном выше коде было бы лучше генерировать исключение из самого getCustomer (), потому что, если он не может найти информацию о клиенте для данного CustID, это означает, что CustID был недопустимым.
Хорошо, возвращаясь к шаблону нулевого объекта, можем ли мы использовать «нулевой» объект CustomerVO, чтобы скрыть нулевую проверку?
CustomerVO {
String firstName = "";
String emailID = "";
}
Разве это не имеет смысла. как вы думаете?
И что вы делаете, чтобы свести к минимуму нулевые проверки в своем приложении.