簡體   English   中英

驗證方法的良好命名約定是什么?

[英]What is good naming convention for validating method?

假設有一個驗證用戶輸入的方法。 此方法檢查列表中是否有任何重復,如果存在,則拋出某種異常。

在這種情況下,該方法的正確命名是什么?

  1. 驗證重復
  2. 驗證重復
  3. 驗證非重復
  4. 要不然..

由於英語不是我的母語,我對此並不熟悉。 如果您能解釋一下原因,我將不勝感激。

我還沒有看到任何關於此的約定。

強調積極的一面

我建議用肯定的措辭,說明有效的情況。 專注於你想看到的,而不是你想避免的。 一致地使用正邏輯使代碼更易於閱讀和理解,而無需在腦海中翻轉 Boolean 邏輯。

例如......如果您希望您的列表沒有重復,這意味着該列表具有獨特的項目,通常也稱為distinct 所以 state 的有效案例作為您的驗證方法的名稱: isDistinct

boolean isDistinct( List< LocalDate > dates ) {
    return ( Set.copyOf( dates ).size() == dates.size() ) ; 
}

根據JavaBeans約定,前導is…表示 object 的屬性的訪問器方法(getter)。 如果在您的上下文中這可能會讓人感到困惑,請選擇其他名稱,例如datesListIsDistinct


順便說一句,對於復雜的數據驗證,您可能會發現有用的Jakarta Bean Validation 另見規格頁面

從技術上講,從約定的角度來看,您提到的所有方法都是正確的。 但是命名約定是一個主觀的話題,可能因團隊而異。 最后,它是關於作為一個團隊聽起來對所有人來說更直觀的東西。

話雖如此,從給定的選項來看,nonDuplicate 版本對我來說聽起來比其他版本好一些,但我想將其改寫為validateNonDuplication 它聽起來比其他人更好的原因是因為您的積極流程是確保沒有重復,如果有重復則拋出異常。 因此,期望更符合不重復的要求。

因此,在我看來,在這種情況下,我會選擇validateNonDuplication

根據 Oracle Oracle 命名標准

  • 方法應該是動詞,混合大小寫,首字母小寫,每個內部單詞的首字母大寫。

如您所見,除了需要描述性之外,它沒有指定任何其他內容。 在您的情況下,您的示例可以更具描述性。 如果您使用驗證列表,可能會將其放入。如果它檢查 object 中的字段,請指定它。 例如 validateIdListDuplicate。

這是一個主觀的話題,所以沒有正確的答案。

暫無
暫無

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

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