是否应该通过方法或调用代码验证方法的必要前提条件?

时间:2012-07-20 08:45:53

标签: validation methods preconditions

要使用一个简单的示例,假设我有一个form.submit()方法,我想在提交之前验证表单。验证应该在调用代码中进入方法内部还是外部?

如果我将验证放在方法中,那么我可以放心,它总是被检查,而不用担心有人在没有满足条件的情况下调用方法。但是,对于读取调用代码的人来说,验证发生可能并不明显,导致他们通过在调用代码中添加自己的检查来检查它。如果他们在调用代码中看到的只是form.submit(),他们可能没有意识到它正在进行验证,导致他们通过添加围绕方法调用的if条件在调用代码中复制它。

处理此问题的正确方法是什么?

public void submit() {
    if(this.isValid()) {
        // do submission
    }
}

...

form.submit();

OR

public void submit() {
    // do submission
}

...

if(form.isValid())
    form.submit();

1 个答案:

答案 0 :(得分:0)

public void validateAndSubmit() {
    if(this.isValid()) {
        this.submitWhenValid()
    }
}
public void submitWhenValid() {
    // do submission
}
...

form.validateAndSubmit();