命令在某些情况下应该什么都不做

时间:2019-06-06 07:20:13

标签: command naming-conventions

我认为基本上存在两种不同的方法: 命令并获取(查询)void和返回。

我经常遇到以下情况: 调用void方法(命令)。当我看到实现时,我注意到 该方法并不总是根据某些特殊条件或某些条件实际执行某些操作。

考虑以下示例:

caller.NotifyCustomer();


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

  Notify();
}

我这样的代码的问题是,呼叫者显然有明确的意图:他想通知客户。 但是该方法本身并不一定总是通知客户。 我认为这令人困惑。我不会仅通过读取方法名称来期待这种行为。 我可以将方法重命名为NotifyCustomerIfApplicable 但这似乎也不是很帅。 另一种选择是在调用实际方法NotifyCustomer()之前检查那些特殊条件,方法是在可以以前调用的单独方法中提取if评估。 但这我也不是很好。

有明确的建议吗?

0 个答案:

没有答案