我最近經歷了一次代碼審查,並堅決建議我將兩種方法合併爲一種。兩種方法都是相同的,除了每個方法的調用外,其中一個方法不需要參數。將兩種方法合併爲一種
方法#1
private void updateCache(List<CategoryObject> objectList) {
ServiceApi serviceApi = getService();
if (serviceApi != null) {
try {
serviceApi.updateResources(objectList);
} catch (BusinessException e) {
log.error(e);
}
}
}
方法#2
private void registerCache() {
ServiceApi serviceApi = getService();
if (serviceApi != null) {
try {
serviceApi.registerCategory(CATEGORY_NAME);
} catch (BusinessException e) {
log.error(e);
}
}
}
能這些甚至被有效地結合起來?
如果我要重構這兩種方法,我會讓它們不同。他們的意圖是不同的,所以爲了可讀性,方法名稱應該反映這一點。但是我會改變這兩種方法的共同部分:錯誤處理。如果服務不存在或拋出BusinessException,調用方不會收到任何通知。我有serviceApi == null的情況下,並且BusinessException拋出一些方法,所以你的調用者被告知。 –
*堅決建議* :) – OldCurmudgeon