2014-09-24 45 views
1

我可以定義兩種方法:添加一個新的方法或使用一個具有可爲空參數的方法?

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 
    } 
} 

的問題在具有一個方法是,參數不傳達適當的客觀。所以我更喜歡使用兩種方法。

哪種方式是一種好方法?

回答

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); 

有一個很小的問題,這兩種方法沒有任何形式的評論引導用戶。

+0

感謝您的詳細解釋,它非常清晰。 – 2014-09-24 14:37:02

相關問題