Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么名称应该具有返回嵌套对象数的方法?_Java_Naming Conventions_Api Design - Fatal编程技术网

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

Java 什么名称应该具有返回嵌套对象数的方法?,java,naming-conventions,api-design,Java,Naming Conventions,Api Design,假设我们有类画廊和图像。一个图库中可以有多个图像 Gallery应该有一些返回嵌套图像数的方法。我的建议是: int getImagesCount (); int countImages (); int imagesCount (); 我在不同的API中看到了这3条建议中的每一条的示例(当然有另一个名词,甚至没有,比如Collections API中的methodsize()) 你喜欢什么?为什么?(我对countImages()的一个看法是,这个名称可能会让用户认为这个方法会进行一些复杂

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

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

int getImagesCount ();

int countImages ();

int imagesCount ();
我在不同的API中看到了这3条建议中的每一条的示例(当然有另一个名词,甚至没有,比如Collections API中的method
size()

你喜欢什么?为什么?(我对
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()
模棱两可,尤其是在这种情况下。