По моему мнению, в принципе существует два разных метода: команды и получает (запрашивает) пустоты и возвращает.
Я часто сталкиваюсь со следующей ситуацией: вызывается метод (команда) void.Когда я вижу реализацию, я замечаю, что этот метод не всегда действительно что-то делает в зависимости от каких-то особых условий или чего-то такого.
Рассмотрим этот пример:
caller.NotifyCustomer();
NotifyCustomer()
{
if(weather.IsNice || moon.IsShining)
{
return;
}
Notify();
}
Моя проблема с кодом, подобным этому,что у звонящего явно есть четкое намерение: он хочет уведомить клиента.Но сам метод не всегда фактически уведомляет клиента.На мой взгляд, это сбивает с толку.Я не ожидал бы такого поведения, просто прочитав название метода.Я мог бы переименовать метод в что-то вроде NotifyCustomerIfApplicable
, но это тоже не очень красиво.Другой вариант - проверить эти особые условия перед вызовом фактического метода NotifyCustomer()
, извлекая оценку if в отдельном методе, который можно вызвать раньше.Но я думаю, это тоже не очень хорошо.
Есть четкая рекомендация?