java.util.Comparator实例的命名约定

时间:2017-11-10 15:28:05

标签: java naming-conventions comparator naming

假设有一个类库存

  class Stock
  {
    String id;
    String name;
  }

我想创建两个比较器,分别按idname进行比较。 Java中的比较器是否有命名约定或最佳实践?

以下姓名是否正常?

  • StockByIdComparatorStockByNameComparator
  • SortStockByIdSortStockByName

我知道在某些方面可以避免使用冗余名称。人们会选择 List<Stock> stocks超过List<Stock> stockList。另外,类型不应该用变量名编码(可能是因为IDE的兴起?)。但也有清晰的重要方面。

那么命名比较器的好方法是什么?

3 个答案:

答案 0 :(得分:4)

就我个人而言,我会将其命名为StockByIdComparatorStockByNameComparator 它可能看起来有点多余但很明显,因为每个Java开发人员都知道Comparator是什么。

我更喜欢SortStockByIdSortStockByName

  • 它们看起来像方法名称:以动词开头,然后是补语。

  • 我无法知道这些是Comparator实施。

我不认为选择与Comparator界面相关联的名称是一个问题或错误的命名策略。
相反,它是一个接口,它构成了Java基础API的一部分。

答案 1 :(得分:2)

如果你把它们创建为一个类,我会在那里包含Comparator

class StockByIdComparator implements Comparator<Stock> {}

如果要将其创建为变量或常量 - 可以跳过它

static final Comparator<Stock> COMPARE_BY_ID = new Comparator<Stock>() {}

所以看起来像这样

Collections.sort(stocks, COMPARE_BY_ID);

答案 2 :(得分:0)

StockByIdComparatorStockByNameComparator都可以,因为它们描述了这些类的用途。但我会将它们分别命名为StockComparatorByIdStockComparatorByName,因此它们将具有一个通用前缀。因此,将来您可以轻松找到所有StockComparator*

基本上,没有任何最佳实践来命名比较器或其他接口实现。好的方法是选择描述性而不是很长的名称,并将此名称与“所有代码”一起保留。“