【问题标题】:What is good naming convention for validating method? [closed]验证方法的良好命名约定是什么? [关闭]
【发布时间】:2022-01-09 14:58:49
【问题描述】:

假设有一个验证用户输入的方法。该方法检查列表中是否存在重复,如果存在则抛出某种异常。

在这种情况下,这个方法的正确命名是什么?

  1. validateIsDuplicated
  2. 验证复制
  3. validateNonDuplication
  4. 否则..

由于英语不是我的母语,我对此并不熟悉。如果您能解释一下为什么,我将不胜感激。

【问题讨论】:

    标签: java validation conventions


    【解决方案1】:

    根据甲骨文Oracle naming standard

    • 方法应该是动词,混合大小写,首字母小写,每个内部单词的首字母大写。

    如您所见,除了需要描述性之外,它没有指定任何其他内容。在您的情况下,您的示例可以更具描述性。如果您使用方法验证列表,则可以将其放入。如果它检查对象中的字段,请指定它。例如 validateIdListDuplicate。

    这是一个主观的话题,所以没有正确的答案。

    【讨论】:

    • 感谢您回答我的问题。但还是不明白。首先,您说“您的示例可以更具描述性”,但我认为它可能已经足够具有描述性,因为方法签名暗示了这一点。 (例如,private void validateNonDuplication(List<String> uniqueKeys)其次,我完全同意“这是一个主观的话题,所以没有正确的答案”。但我想知道“你怎么命名这个?”因为我是编程新手
    • @cjlee 我将其命名为 validateUniqueElements
    【解决方案2】:

    我没有看到任何关于此的约定。

    强调积极的一面

    我建议使用肯定的措辞,说明有效的情况。专注于你想看到的,而不是你想避免的。一致地使用正逻辑使代码更易于阅读和理解,而无需在脑海中进行布尔逻辑翻转。

    例如……如果您希望列表没有重复,这意味着列表具有唯一项,通常也称为 distinct。因此,将有效大小写作为验证方法的名称:isDistinct

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

    根据JavaBeans 约定,前导is… 表示对象属性的访问器方法(getter)。如果在您的上下文中这可能会让人感到困惑,请选择其他名称,例如 datesListIsDistinct


    顺便说一句,对于复杂的数据验证,您可能会发现有用的Jakarta Bean Validation。另见specification page

    【讨论】:

    • 我从你的回答中得到了一个想法,也许我需要分开我的对象的责任......就像.. class SomeValidatorpublic void isValid( ... ) 运行 boolean isDistinct( ... ) sn-p。我会考虑更多。谢谢!
    • @cjlee Bean Validation 规范是实现这一目标的途径,以正式的方式编写您自己的验证器类。然后可以在许多地方轻松使用该验证逻辑。
    • 我的导师说不要使用任何框架或外部库:) 如果有机会我会稍后尝试。 :)
    【解决方案3】:

    从技术角度来看,您提到的所有方法都是正确的。但是命名约定是一个主观的话题,可能因团队而异。最后,它是关于作为一个团队听起来对所有人来说更直观的东西。

    话虽如此,从给定的选项来看,nonDuplicate 版本对我来说听起来比其他版本好一些,但我想将其改写为validateNonDuplication。它听起来比其他人更好的原因是因为您的积极流程是确保没有重复,如果有重复则抛出异常。所以期望更符合不重复的要求。

    因此在我看来,在这种情况下我会选择validateNonDuplication

    【讨论】:

    • 这正是我想要的。感谢您的精彩解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多