2010-02-15 29 views
1

我需要爲處理「值數組」的例程找到一個好的和可理解的命名方案(我寫了類似於C++的在Java中爲valarray,針對原始類型進行了一些優化)可以修改(寫回)參數的函數和方法的良好命名約定

我知道程序的主要分類是由間:

  • 功能(他們可能採取的參數,而且必須返回的東西)
  • 方法(它們可能採取的參數和不返回任何東西)

由於性能方面的原因,我不僅可以定義威脅參數爲readonly的函數/方法,還可以定義可能修改其第一個參數的函數/方法。

這樣一個不僅能做到這一點...:

ValArrayInt a=..., b=...; 
// "apply" treats "a" and "b" as readonly 
ValArrayInt temp = ValArrays.apply(adder, a, b); // temp = a + b 
a = temp; 

...而且這樣的:

ValArrayInt a=..., b=...; 
// "apply" modifies "a" 
a.apply(adder, b); // a += b 

請,建議對這些命名方案種套路:

  • 功能其中治療所有參數只讀
  • 功能可以修改其第一參數
  • 方法其中治療所有參數只讀
  • 方法其中可以修改他們的第一個參數

我想到了像ModifyingMethod,NonModifyingMethod或類似的東西,但我認爲這些名稱不夠簡單,太長。

回答

1

我一直用的是「更新」的方法名,以表明一個或多個參數將結果進行更新。對於前:

updateClaimWithPolicyDetails(Claim c, PolicyCriteria pc, String identifier) 

你可以合理地推斷,這種方法可能會更新索賠對象。然後,如果用戶想知道更多信息,他可以深入研究javadoc。對於返回值和更新參數的函數,可以使用類似「updateAndGet」的函數。

public Policy updateClaimAndGetPolicy(Claim c, PolicyCriteria pc, String identifier) 

從這裏就可以推斷出一個更新聲明並返回一個政策(的要求可能已經更新的政策)。

如果在方法中沒有使用單詞updateXXX,那麼您應該假設所有參數都是隻讀的。如果你有兩個可更新的參數,那麼你可以說

updateClaimAndPolicyCriteria(Claim C, PolicyCriteria pc, String junkParam) 

以上可以告訴你,索賠和政策標準將被更新。

0

將此信息編碼到方法名稱中可能很複雜。

另一方面,該信息必須存在於該方法的文檔(例如在Javadoc上),明確指出方法的副作用。

+0

問題是:只有當方法名稱(和/或參數)不夠明顯時,大多數用戶纔會查看API文檔。 –

0

我喜歡上述的預先更新或修改的答案。但是,這應該是文檔的函數,用於描述函數的調用以及它如何影響參數。但是,通常你不想修改傳遞給函數的參數,因爲有些情況下(比如Collections.sort)你想這樣做以防止複製。此外,請確保在適當的地方使用不可變對象,而不是始終使用一些愚蠢的Java Bean類與所有公共getter和setter。