Шаблон нулевого объекта, чтобы избежать проверок нулевого значения?

В последнее время я столкнулся с шаблоном проектирования нулевого объекта, и мои коллеги говорят, что его можно использовать для устранения проверок нулевого указателя, которые встречаются во всем коде.

Например, предположим, что класс 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 = ""; 
}

Разве это не имеет смысла. как вы думаете?

И что вы делаете, чтобы свести к минимуму нулевые проверки в своем приложении.

6
задан ergosys 17 October 2010 в 06:12
поделиться