我计划定义一个类,它的属性中包含 x/y 网格的坐标。但是,我不确定实现此设计的“最佳”方式。这是一个非常简单的问题,我只想正确地做并且有理由!
一种解决方案是在int
对象中拥有两个类型为“ ”的属性,一个用于 x,一个用于 y。
另一种是定义一个包含 x/y 值的两个整数的 typedef 结构并命名它<ClassPrefix>Coordinate
。类似于CGSize
?
有没有其他/更好的方法来做到这一点?哪个是首选?不知道如何证明任何一种方式。
谢谢!
蒂姆。
我计划定义一个类,它的属性中包含 x/y 网格的坐标。但是,我不确定实现此设计的“最佳”方式。这是一个非常简单的问题,我只想正确地做并且有理由!
一种解决方案是在int
对象中拥有两个类型为“ ”的属性,一个用于 x,一个用于 y。
另一种是定义一个包含 x/y 值的两个整数的 typedef 结构并命名它<ClassPrefix>Coordinate
。类似于CGSize
?
有没有其他/更好的方法来做到这一点?哪个是首选?不知道如何证明任何一种方式。
谢谢!
蒂姆。
“哪个是首选?”的答案 问题取决于几个因素:
struct
获胜;如果答案是“五十八”,则对象获胜。struct
可能没问题。struct
可能是更好的选择。struct
可能是更好的选择。最终,您的设计约束帮助您确定什么是最好的;没有普遍“更好”的数据结构。
除了@dasblinkenlight 的回答,我会给你一些决策建议:
创建后结构是不可变的吗?
使用一个对象。
该结构是否拥有(= 保留)指向其他对象或数组(C 数组或 C 数组)的指针NSArray
?它是否与对象交互(= 具有带有对象参数的方法)?
然后使用一个对象。
该结构是否仅包含原始类型(int
, float
, otherstruct
等)并且仅与其他原始类型/结构交互?
然后使用struct
with 函数。
这是一种权衡。
一个类和它的实例会消耗更多的资源,尤其是当你必须制作很多它们的时候。如果没有这么多的实例,那不是问题。
结构更快但很难扩展,最不方便的是结构不能保存对象或方法。
对于您的示例,如果您仅将其用于坐标,我建议您使用 struct. 但这取决于您的设计和代码。没有绝对的判断哪个是最好的。