Java 什么名称应该具有返回嵌套对象数的方法?
假设我们有类画廊和图像。一个图库中可以有多个图像 Gallery应该有一些返回嵌套图像数的方法。我的建议是:Java 什么名称应该具有返回嵌套对象数的方法?,java,naming-conventions,api-design,Java,Naming Conventions,Api Design,假设我们有类画廊和图像。一个图库中可以有多个图像 Gallery应该有一些返回嵌套图像数的方法。我的建议是: int getImagesCount (); int countImages (); int imagesCount (); 我在不同的API中看到了这3条建议中的每一条的示例(当然有另一个名词,甚至没有,比如Collections API中的methodsize()) 你喜欢什么?为什么?(我对countImages()的一个看法是,这个名称可能会让用户认为这个方法会进行一些复杂
int getImagesCount ();
int countImages ();
int imagesCount ();
我在不同的API中看到了这3条建议中的每一条的示例(当然有另一个名词,甚至没有,比如Collections API中的methodsize()
)
你喜欢什么?为什么?(我对countImages()
的一个看法是,这个名称可能会让用户认为这个方法会进行一些复杂的计算。)我的建议:
public interface Gallery {
int getNumberOfImages();
//...
}
我同意,
countXX()
给人的印象是调用此方法会触发某种计算。所以我不会在这里使用它。出于同样的原因,我也会排除countImages()
除此之外,如果在所属的代码库
Gallery
中存在或多或少一致的命名约定,我建议遵循它。在没有明确的项目约定的情况下,我个人倾向于size()
,size()
的问题在于,不一定要清楚返回的是集合的元素数(本例中的图像)还是以字节/千字节/兆字节为单位的大小。出于同样的原因,我倾向于选择getImageDimensions()
而不是getImageSize()
。在您的例子中,我喜欢countImages()
,因为它清晰简洁,但如果有getImage(int)
之类的方法,它就不遵循命名约定。因此,我将不得不使用int-getImageScont()
或更好的方法,int-getNumberOfImages()
或int-getNumImages()
如果您正在考虑使用一种方法返回大小,另一种方法返回第n个元素,我的建议是:不要这样做!使用集合api的强大功能:创建一个返回列表的方法。
这样API的用户就可以更容易地对图像进行迭代(使用增强的for循环,而不必处理索引)、排序、将它们组合到其他集合中等等
它很容易实现:
- 如果图像在内部已经表示为列表,则可以返回该列表(可以选择使用Collections.unmodifiableList包装)
- 即使您不将它们存储为列表,将它们公开为
list
也很容易,只要重写size()
和get(int)
,就可以编写AbstractList
的一个小子类
就我个人而言,size()
对于类似集合的对象,我永远不会想到可以返回其内存占用的大小:-o对我来说,这非常违反Java接口约定。是的,对于Java集合,这是正确的。但是,如果我的类不是从java.util.Collection
派生的,我永远不会实现size()
方法。另外,请记住,在这个特定示例中,库是文件和图像的集合,所以有点像说aDirectory.size()
,这很容易表示字节大小,而且还有目录中的文件计数。因此,我的直觉是,something.size()
模棱两可,尤其是在这种情况下。