if 在干净代码中的正确位置

Proper place of if in clean coding

如果我们谈论 ifs 和干净的代码,我有一个与某些 "best practices" 相关的问题。什么是好的做法(尤其是当我们谈论 Java 时):

public void foo(...){
.
.
   if (something){
     callfunction();
   }
.
.
}

public void foo(...){
.
.
callfunction();
.
.
}

在第二种情况下,我们在 callfunction() 中有 'if'。这个案例有什么好的做法吗?

我能给你的最好建议是清楚地命名你的函数。如果您的函数做了任何额外的事情,那么应该在函数名称中提及以避免混淆。

例如:

void sendEmail(Person person);

我希望这会发送 e-mail,而不是其他任何内容。如果 personnull,我希望这个函数失败,而不是静静地什么都不做。在某些情况下什么都不做的函数最好命名为:

void trySendEmail(Person person);

或者:

void sendEmailIfPersonValid(Person person);

表示应该由函数的调用者解决的问题的一个好方法是检查函数中的无意义输入:

void sendEmail(Person person) {
    if(person == null) {
        throw new IllegalArgumentException("person cannot be null");
    }
    if(!person.hasEmail()) {
        throw new IllegalArgumentException("person must have an email address");
    }


    // code to send email here
}

如果您仍在学习,请查看 java.* 包中函数的文档,它们的文档非常详尽并且通常遵循最佳实践。