typedef struct vs. Object - Benefits



我计划定义一个类,在它的属性中包含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。但这取决于你的设计和代码。谁最好,没有绝对的判断。

最新更新