名稱變量問題的一個好方法是使用名稱來表示變量的實際含義。在你的例子中,你使用的名稱沒有說方法功能或變量的含義,這就是爲什麼很難選擇一個名稱。
在很多情況下,例如JDK中的你, Arrays#copyOf
:
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
@SuppressWarnings("unchecked")
T[] copy = ((Object)newType == (Object)Object[].class)
? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
在這種情況下,他們稱之爲參數original
和局部變量copy
其完美表達了返回的值是參數的副本。確切地說,複製是這種方法的作用,並且相應地命名。
使用同樣的道理對於你的情況(考慮重構提供更多有意義的名稱,以你的方法和變量),我會說出當地的nodes
東西拷貝像processedNodes
,表示該變量是什麼,要與你的方法的一致名稱。
編輯:
你在編輯中添加不提供有關它做什麼要麼提示新方法的名稱。我會假設它修改了id通過參數傳遞的用戶的某些屬性(可能在數據庫中)。
如果是這種情況(或類似情況),我認爲您可以應用的適當方法是每種方法都應該承擔一項責任。根據你方法的名稱,它應該處理用戶,因爲你需要一個int userId
。解析String userId
的責任應該超出此方法的範圍。
使用所提出的方法有(其中包括)以下優點:如果你有額外的驗證添加到您的輸入
來源
2016-09-01 15:40:19
acm
前綴怎麼樣? node2除了nodeCpy之外沒有其他說法,例如。你還需要這個副本嗎?如果你真的需要它,只需複製收藏。否則,它是未使用的代碼。 – sascha10000
我很確定沒有參數副本的命名約定。我也會使用'nodeCpy'作爲@sascha10000建議。 – ArcticLord
基於意見的完美純度。但是,由於代碼的讀者可能會主要關注方法體,所以我會選擇邏輯名來理解* copy *中的代碼。假設像我的汽車列表這樣的概念,我會去參數名稱,如myCarsIn,myCarsParm,myCarsImmutable,並命名複製myCars。 (並且BTW:名稱「節點」對讀者沒有幫助 - 是否沒有這些節點共享的邏輯概念?) – mtj