我计划定义一个类,在它的属性中包含x/y网格的坐标。然而,我不确定这种设计的"最佳"方式。这是一个很简单的问题,我只是想正确地做,并有一个理由!
一个解决方案是在对象中有两个类型为' int
'的属性,一个用于x,一个用于y。
另一种是定义一个包含x/y值的两个int型的类型定义结构体,并命名为<ClassPrefix>Coordinate
。类似于CGSize
?
有没有其他更好的方法来做这件事?哪个更受欢迎?我不知道怎么证明。
谢谢!
蒂姆。这个问题的答案取决于以下几个因素:
-
你打算创建多少这样的项目? -如果答案是"百万",
struct
获胜;如果答案是"58",对象获胜。 -
你需要在上面定义方法吗? -如果答案是"是",对象获胜;否则,
struct
可能是OK的。 -
你打算定义它的数组吗? -如果答案是"是",
struct
可能是更好的选择。 -
你需要经常创建和销毁它吗? -如果答案是"是",
struct
可能是更好的选择。
最终,你的设计约束帮助你决定什么是最好的;没有一种数据结构是普遍"更好"的。
除了@dasblinkenlight的答案,我还会给你一些决策建议:
-
创建后结构是否不可变?
使用对象 -
结构拥有(=保留)指针到其他对象或数组(C数组或
NSArray
)?它是否与对象交互(=有对象参数的方法)?
使用对象 -
结构是否只包含基本类型(
int
,float
,其他struct
等),它只与其他基本/结构相互作用?
则使用带函数的struct
这是一种权衡。
一个类和它的实例将消耗更多的资源,特别是当你必须创建很多的时候。如果没有这么多实例,就不会有问题。
结构更快,但很难扩展,最不方便的是结构不能容纳对象或方法。
对于你的例子,如果你只是使用它的坐标,我建议你使用struct。但这取决于你的设计和代码。谁最好,没有绝对的判断。