如何看待"反如果"运动及其目标?

Vij*_*bey 3 java design-patterns programming-languages anti-patterns

我有一个开发人员最近3年,一直在使用if-else或if-else if语句在我的编程习惯中很多.

今天,我找到了这个链接.

我放在这里的一个明显的例子

public void doSomthing(String target, String object){
    //validate requests
    if(target != null && target.trim().length() < 1){
        //invalid request;
    }

    //further logic

}
Run Code Online (Sandbox Code Playgroud)

现在,我已经看到了各种各样的地方,图书馆的这种检查.所以,我想讨论一下这种运动的价值.

请让我知道你的看法.

cdh*_*wie 9

该文章主张反对使用if模拟多态性.换句话说,如果您发现自己正在切换或测试您的对象是否属于某种类型,那么您做错了 - 您应该让类型系统为您执行此操作.


Ton*_*nis 5

我想指出的一件事是链接的文章不是反对的.它是基于反类型的逻辑.假设每只动物是一种类型/类别.

IF i am a giraffe then eat a leaf
else IF i am a rhino eat some grass
else IF I am a monkey eat a banana
etc
Run Code Online (Sandbox Code Playgroud)

这是令人震惊的IMO.不是因为它有一串ifs,而是因为条件是特定于类型的.

相反,每只动物都可以实现自己的eat()方法.现在上面的代码变成了

animal.eat();
Run Code Online (Sandbox Code Playgroud)

就是这样.由于没有if语句,因此不存在逻辑错误.此外,添加Animal的新实现不需要更改此代码.在第一个示例中,添加Elephant需要更改代码.