添加一个新方法或使用一个可以为null的参数的方法?

时间:2014-09-24 14:21:33

标签: java

我可以定义两种方法:

verifyPassengerInTrain(Integer trainId)

verifyPassengerInCompartments(Integer trainId, Integer[] selectedCompartments) 

或者我可以添加一个用内部逻辑处理这两种情况的方法:

verifyPassenger(Integer trainId, Integer[] selectedCompartments) {
    if(selectedCompartments == null || selectedCompartments.length == 0) {
       // Need to verify the passenger in the entire train and update the below method
       // update train.processedAllCompartments(true);  
     } else {
       // verify the passenger in the given train id and in the given compartments
     }  
 }

使用一种方法的问题是参数不能正确地传达目标。所以我更喜欢使用两种方法。

哪种方式会很好?

1 个答案:

答案 0 :(得分:2)

您应该添加两种方法,因为它们用于不同的目的。从您的角度来看,这可能是您作为家庭作业或实践工作的事情,您将成为唯一的开发人员。

但是,在实际应用中,多个开发人员可能不熟悉代码。因此,定义不言自明的方法比代码简洁更重要,特别是当结果的含义根据输入变化很大时,就像在这种情况下一样。

当某些人可能只能访问您的Javadoc或方法作为API的一部分时,这一点变得更加明显。比较您提出的以下两个实现。

// verifies whether or not a passenger is on a train if there are no selected compartments, or within the selected compartments if compartments are provided
verifyPassenger(Integer trainId, Integer[] selectedCompartments);

分成两个方法可以创建一对自我评论方法。

verifyPassengerInTrain(Integer trainId);
verifyPassengerInCompartments(Integer trainId, Integer[] selectedCompartments);

如果没有任何评论指导用户,这两种方法的作用几乎没有问题。