【发布时间】:2022-01-09 14:58:49
【问题描述】:
假设有一个验证用户输入的方法。该方法检查列表中是否存在重复,如果存在则抛出某种异常。
在这种情况下,这个方法的正确命名是什么?
- validateIsDuplicated
- 验证复制
- validateNonDuplication
- 否则..
由于英语不是我的母语,我对此并不熟悉。如果您能解释一下为什么,我将不胜感激。
【问题讨论】:
标签: java validation conventions
假设有一个验证用户输入的方法。该方法检查列表中是否存在重复,如果存在则抛出某种异常。
在这种情况下,这个方法的正确命名是什么?
由于英语不是我的母语,我对此并不熟悉。如果您能解释一下为什么,我将不胜感激。
【问题讨论】:
标签: java validation conventions
根据甲骨文Oracle naming standard:
如您所见,除了需要描述性之外,它没有指定任何其他内容。在您的情况下,您的示例可以更具描述性。如果您使用方法验证列表,则可以将其放入。如果它检查对象中的字段,请指定它。例如 validateIdListDuplicate。
这是一个主观的话题,所以没有正确的答案。
【讨论】:
private void validateNonDuplication(List<String> uniqueKeys)其次,我完全同意“这是一个主观的话题,所以没有正确的答案”。但我想知道“你怎么命名这个?”因为我是编程新手
我没有看到任何关于此的约定。
我建议使用肯定的措辞,说明有效的情况。专注于你想看到的,而不是你想避免的。一致地使用正逻辑使代码更易于阅读和理解,而无需在脑海中进行布尔逻辑翻转。
例如……如果您希望列表没有重复,这意味着列表具有唯一项,通常也称为 distinct。因此,将有效大小写作为验证方法的名称:isDistinct。
boolean isDistinct( List< LocalDate > dates ) {
return ( Set.copyOf( dates ).size() == dates.size() ) ;
}
根据JavaBeans 约定,前导is… 表示对象属性的访问器方法(getter)。如果在您的上下文中这可能会让人感到困惑,请选择其他名称,例如 datesListIsDistinct。
顺便说一句,对于复杂的数据验证,您可能会发现有用的Jakarta Bean Validation。另见specification page。
【讨论】:
class SomeValidator 和 public void isValid( ... ) 运行 boolean isDistinct( ... ) sn-p。我会考虑更多。谢谢!
从技术角度来看,您提到的所有方法都是正确的。但是命名约定是一个主观的话题,可能因团队而异。最后,它是关于作为一个团队听起来对所有人来说更直观的东西。
话虽如此,从给定的选项来看,nonDuplicate 版本对我来说听起来比其他版本好一些,但我想将其改写为validateNonDuplication。它听起来比其他人更好的原因是因为您的积极流程是确保没有重复,如果有重复则抛出异常。所以期望更符合不重复的要求。
因此在我看来,在这种情况下我会选择validateNonDuplication。
【讨论】: