簡體   English   中英

可能會修改(寫回)參數的函數和方法的良好命名約定

[英]Good naming convention for functions and methods which may modify (write back to) a parameter

我需要為處理“值數組”的例程找到一個良好且易於理解的命名方案(我用Java編寫了類似於C ++的valarray東西,並考慮了一些對原始類型的優化)

我知道例程的主要分類是在以下幾種之間進行的:

  • 函數(它們可能帶有參數並且必須返回某些東西)
  • 方法(它們可能帶有參數並且不返回任何內容)

出於性能原因,我不僅可以將威脅其參數的函數/方法定義為只讀,還可以將可能修改其第一個參數的函數/方法定義為。

這樣一個人不僅可以做到這一點...:

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之類的東西,但我認為這些名稱不夠簡單,而且時間太長。

我總是在方法名稱中使用單詞“ update”來表示一個或多個參數將因此而被更新。 例如:

updateClaimWithPolicyDetails(Claim c, PolicyCriteria pc, String identifier)

您可以合理地推斷出此方法可能會更新Claim對象。 然后,如果用戶想了解更多信息,可以深入研究Javadoc

對於返回某些內容並更新參數的函數,可以使用“ updateAndGet”之類的東西。

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

由此,您可以推斷出正在更新索賠並返回策略(該索賠可能已經針對該策略進行了更新)。

如果方法中未使用單詞updateXXX,則應假定所有參數都是只讀的。 如果您有兩個可更新的參數,則可以說

updateClaimAndPolicyCriteria(Claim C, PolicyCriteria pc, String junkParam)

上面可以告訴您,索賠和保單標准都將被更新。

將此信息編碼為方法名稱可能很復雜。

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

我喜歡上述等待更新或修改的答案。 但是,這實際上應該是文檔的功能,以描述調用函數的作用及其如何影響參數。 但是,通常您不希望修改傳遞給函數的參數,因為在某些情況下(例如Collections.sort)您想這樣做以防止復制。 另外,請確保在適當的地方使用不可變對象,而不是始終對所有公共getter和setter使用某些愚蠢的Java bean類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM