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

Naming convention for instances of java.util.Comparator

假设有一只class股票

  class Stock
  {
    String id;
    String name;
  }

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

下面的名字可以吗?

我知道在某些领域避免重复名称。一个人会选择 List<Stock> stocks 超过 List<Stock> stockList。类型也不应该编码在变量名中(也许是因为 IDE 的兴起?)。但还有一个重要的维度是清晰度。

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

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

我不喜欢 SortStockByIdSortStockByName,因为

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

  • 我不知道这些是 Comparator 实现。

我不认为选择一个名称加上 Comparator 界面是一个问题或糟糕的命名策略。
相反,它是一个接口,它是 Java 基础 API.

的一部分

StockByIdComparatorStockByNameComparator 没问题,因为它们描述了这些 类 的目的。但我会分别将它们命名为 StockComparatorByIdStockComparatorByName,因此它们将具有一个通用前缀。所以以后,你将能够轻松找到所有 StockComparator*

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

如果您将它们创建为 class 我会在其中包含比较器

class StockByIdComparator implements Comparator<Stock> {}

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

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

所以它看起来像这样

Collections.sort(stocks, COMPARE_BY_ID);