什么名称应该有返回嵌套对象数的方法?

时间:2010-02-25 14:44:16

标签: java naming-conventions api-design

假设我们有Gallery和Image类。一个图库中可以有许多图像。

图库应该有一些方法可以返回嵌套图像的数量。我的建议:

int getImagesCount ();

int countImages ();

int imagesCount ();

我在不同的API中看到了这三个建议中的每一个的示例(当然还有另一个名词,甚至没有它,就像Collections API中的方法size ()一样)。

您更喜欢什么?为什么? (我对countImages ()的一个想法是,这个名称可以让用户认为这个方法做了一些复杂的计算。)

4 个答案:

答案 0 :(得分:2)

我的建议:

public interface Gallery {

    int getNumberOfImages();

    //...
}

我同意,countXX()会给人留下这样的印象,即调用此方法会触发某种计算。所以我也不会在这里使用它。

答案 1 :(得分:2)

出于同样的原因,我也会排除countImages ()

除此之外,如果Gallery所属的代码库中存在或多或少一致的命名约定,我建议遵守它。如果没有明确的项目公约,我个人会倾向于size()

答案 2 :(得分:2)

如果您正在考虑使用一个返回大小的方法,而另一个返回第n个元素的方法,我的建议一般:不要这样做!使用集合API的强大功能!:创建一个返回List<Image>的方法。 这样,API的用户可以更轻松地执行诸如迭代图像(使用增强的for循环而不必使用索引),对它们进行排序,将它们组合到其他集合中等事情... ...

实施起来非常简单:

  • 如果图像在内部已经表示为列表,则可以返回该图像(可选择用Collections.unmodifiableList包装)。
  • 即使您不将它们存储为列表,将它们公开为List<Image>就像编写AbstractList的小子类一样简单,只需覆盖size()和{{1}无论如何,你要实现的两种方法。

答案 3 :(得分:0)

size()的问题在于,您是否返回元素的数量(本例中的图像)或集合的大小(以字节/千字节/兆字节为单位)并不一定清楚。出于同样的原因,我倾向于选择getImageDimensions()getImageSize()。在您的情况下,我喜欢countImages(),因为它简洁明了,但如果有getImage(int)之类的方法,则不遵循命名约定。因此,我必须选择int getImagesCount()或更好,int getNumberOfImages()int getNumImages()