2

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

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

int getImagesCount ();

int countImages ();

int imagesCount ();

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

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

4

4 回答 4

2

我的建议:

public interface Gallery {

    int getNumberOfImages();

    //...
}

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

于 2010-02-25T14:47:05.497 回答
2

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

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

于 2010-02-25T14:47:19.627 回答
2

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

这很容易实现:

  • 如果图像在内部已经被表示为一个列表,您可以只返回它(可选地用 Collections.unmodifiableList 包装)。
  • And even if you don't store them as a list, exposing them as List<Image> is as easy as writing a small subclass of AbstractList by just overriding size() and get(int), the two methods you were going to implement anyways.
于 2010-02-25T15:00:57.197 回答
0

问题size()在于,不一定清楚您是返回元素的数量(在这种情况下为图像)还是集合的字节/千字节/兆字节的大小。出于同样的原因,我倾向于getImageDimensions()选择getImageSize(). 在您的情况下,我喜欢它,countImages()因为它清晰简洁,但是如果例如有类似getImage(int). 因此,我将不得不与int getImagesCount()或更好,int getNumberOfImages()int getNumImages()

于 2010-02-25T14:49:24.523 回答