2017-10-13 30 views
1

有两种方法,以确保满足条件:这个条件模式有没有名字?

  • 最简单的方法是使用if与条件:

    if (condition) 
    { 
        /* execute code */ 
    } 
    
  • 另一种方式是类似的,但我检查了否定条件和return如果这是给出:

    if (!condition) 
    { 
        return; 
    } 
    /* execute code */ 
    

这种模式是否有名字? 我试过Googleing它,但没有成功...

+0

它被称为'“如果”语句“ - [if-else(C#引用)](https://docs.microsoft.com/zh-cn/library/default.aspx)。com/en-us/dotnet/csharp/language-reference/keywords/if-else) – Fabio

+0

我不知道是否有这个名字,但我认为这部分建议避免了太多的嵌套层次代码块。通过使用上面描述的第二种形式,可以避免在'/ *执行代码* /'内的任何其他块进一步嵌套。而且你的代码嵌套越少(至少在我看来)越容易让人理解你的代码。 – Discoverer98

回答

2

我相信这种模式叫做提前退出。

1

他在问我相信什么样的模式被称为一般,所以他可以研究它们。他们被称为条件逻辑。所以,如果你谷歌条件逻辑模式...有很多谷歌响应。

1

我经常用它。但我不知道它是否真的有名字。
我把它作为fail-fast的衍生物考虑。
它通过隔离开始时没有名义的情况并保留名义/经典情况,提高了可读性。

1

以前的答案很好,但是模式的名称更加精确。我们先看看其他名字。

  • 这两个例子是条件逻辑,这样的名字并没有真正帮助我们区分了负收益的积极执行。
  • 负回报确实构成提前退出但由于还有其他方法可以实现提前退出,因此该名称不是特定于此示例。
  • 负回报可能是快速失败但是return是否一定是失败是值得商榷的。抛出一个例外将是一个更好的快速失败的例子,也将构成提前退出。

负回报更准确地说是guard clause,这也是refactoring模式。

0

我已经看到了多个名字在野外的第二图案(具有return语句)

  • 回报格局初
  • 后卫条款模式
  • 保镖模式

它通常用于减少代码中嵌套级别的数量,并有助于提高可读性。