java - 返回 int[]-array 或使用自己的类 "Size"/"Dimension"/"Point"?

标签 java

当我的一个类有一个返回其当前大小(由宽度和高度组成)的方法时,或者当我有一个方法应该返回屏幕上由 x 和 y 组成的点时值,返回该值的最佳方法是什么?

我是否应该(我怀疑)只返回一个无意义的 int[] 或 float[] 数组,这将是最简单的(也许是最快的,如果这明显影响运行时间)这样的方式?

public int[] getPosition()

或者我应该编写一个自己的小类,其中包含获取和设置宽度和高度/x 坐标和 y 坐标的方法?

public Dimension getSize()

据我搜索,标准库中没有类可以完全执行此操作。
或者有吗?
我不太确定是否 PointDimension适合此任务,或者如果这宁愿滥用它们。

最好的方法是什么?最好、最合理的解决方案是什么?

谢谢
大卫

最佳答案

使用更抽象的术语!

在 OOP 中,清晰的抽象级别几乎总是好的。这可以让您和其他人知道您在做什么。想象一下这是您第一次看到这段代码:

public int[] getSize ()

他/她如何知道数组中的哪个元素代表宽度或高度?你当然可以写评论

//0 index: width
//1 index: height

但也许过了一段时间,你说你想将数组中的第二个元素更改为宽度,但你忘记更改注释。

看到了吗?评论很容易过时!

这就是为什么您应该创建自己的维度

public class Dimension {
    private int width;
    private int height;
    //getter setter omitted as I'm lazy. But please DO add them in your code!
}

现在想象一下这是您第一次看到这个:

public Dimension getSize ()

然后您进入Dimension的声明并看到widthheight。即使是傻瓜也知道 Dimension.width 表示某物的宽度。

正如您现在所看到的,现在更加清晰了。

关于java - 返回 int[]-array 或使用自己的类 "Size"/"Dimension"/"Point"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301119/

相关文章:

java - Spring MVC 应用程序在 URL 中过滤 HTML - 这是一个安全问题吗?

java - GSON解析动态JSON字段

java - 获取属于某个类的所有对象

java - 如何使用 Neo4j Ha 集群配置 Spring?

java - 在eclipse中放置一个小程序

java - 为什么flashplayer不需要JVM?

java - 哪个Java阻塞队列对于单生产者单消费者场景最有效

java - org.hibernate.MappingException : Association references unmapped class

java - 警告 : org. springframework.web.servlet.PageNotFound - 不支持请求方法 'GET'

java - 如何使用intellij正确远程调试pod?