私有函数中是否需要参数验证

时间:2018-04-21 03:34:59

标签: java

鉴于有一个聚会和一个java应用程序来管理人员,下面是添加人员的类。

public enum ServiceType {
    DJ("DJ"), 
    Host("Host"), 
    Guest("Guest"), 
    Others("Others");
}

public void addHost(Person a) {
    this.addParticipant(a, Role.Host);
}

public void addDJ(Person a) {
    this.addParticipant(a, Role.DJ);
}

public void addGuest(Person a) {
    this.addParticipant(a, Role.Guest);
}

private void addParticipant(Person p, Role r);

是否有必要检查私人函数addParticipant中的参数角色是否有效?

如果需要检查,我如何覆盖UT中的例外行?

1 个答案:

答案 0 :(得分:0)

您不需要在私有方法中为参数添加空检查。无法从类外部访问私有方法,并且您(作为编写代码的人)负责将正确的输入传递给它。这形成了thar私有方法的前提条件

但是在这里,参数Role是从同一个类中传递的。所以,没有必要检查它是否为null(除非你显式传递null,在这种情况下错误就在你身上)。

您应该做的是通过在公共方法中添加空检查来验证传递给公共方法的Person实例是否为null

罗伯特·马丁在他的“清洁代码”一书中也提到了这一点 - 在第38项:检查有效性的参数(强调我的

  

对于未导出的方法,您作为包作者控制调用该方法的环境,因此您可以而且应该确保仅传递中的有效参数值。因此,非公共方法通常应使用断言[..]

检查其参数