Команды должны делать "ничего" в некоторых случаях - PullRequest
1 голос
/ 06 июня 2019

По моему мнению, в принципе существует два разных метода: команды и получает (запрашивает) пустоты и возвращает.

Я часто сталкиваюсь со следующей ситуацией: вызывается метод (команда) void.Когда я вижу реализацию, я замечаю, что этот метод не всегда действительно что-то делает в зависимости от каких-то особых условий или чего-то такого.

Рассмотрим этот пример:

caller.NotifyCustomer();


NotifyCustomer()
{
  if(weather.IsNice || moon.IsShining)
  {
    return;
  }

  Notify();
}

Моя проблема с кодом, подобным этому,что у звонящего явно есть четкое намерение: он хочет уведомить клиента.Но сам метод не всегда фактически уведомляет клиента.На мой взгляд, это сбивает с толку.Я не ожидал бы такого поведения, просто прочитав название метода.Я мог бы переименовать метод в что-то вроде NotifyCustomerIfApplicable, но это тоже не очень красиво.Другой вариант - проверить эти особые условия перед вызовом фактического метода NotifyCustomer(), извлекая оценку if в отдельном методе, который можно вызвать раньше.Но я думаю, это тоже не очень хорошо.

Есть четкая рекомендация?

...