2009-02-25 30 views
1

我使用Delphi,但这是一个我认为对任何面向对象编程语言都有效的问题。何时使用记录对象

什么时候应该在对象上使用记录。我曾经认为,当你对一组相关数据进行一些简单的定义时,你会使用记录,这些数据是你想要存储在一起的,不需要能够自己操作。然而,每次我决定将一段数据与其他数据一起放入记录中时,我想出了为什么它应该是一个完全成熟的对象的理由。

  1. 几乎总是有一个原因,一块数据需要一些属性或方法。
  2. 对象(至少在Delphi中)内存管理(创建和销毁)非常简单得多。
  3. 使用对象在速度和内存方面可能不会更昂贵,但更加灵活。

事实上,我最近得出的结论是,如果您正在从磁盘读取可以直接读入记录数组的磁盘中的二进制文件,那么可能唯一一次应该在现代应用程序中使用记录。

我继承了一个10年的项目,该项目广泛地在对象上使用记录来处理小块数据,我不知道它是我还是应该将这些概念委托给回收站的体验。

讨论。

回答

1
  1. 当没有方法来处理您的数据时,大部分时间没用。所以你就在这里。

  2. 对象和记录之间最大的区别之一是记录是栈上的默认值和堆上的对象。要获得堆的记录,您可以获得所指的所有麻烦,但是当您将它们留在堆栈中时,管理对象的生命周期会变得更容易。但让我们面对现实,短期记录几乎没有用处。

  3. 当对象被实例化时,不仅仅是保留内存发生,还有一个VMT被管理,而记录没有。所以分配对象比记录要贵一些,但是我想当你不谈论物品的时候,它是可以忽略的。

要做出选择,您需要考虑如何使用这些对象或记录。如果你要读取大的二进制文件,记录是要走的路(将整个缓冲区读入一个记录数组,可能会将它们转换为对象来处理)。如果您正在处理结构化数据,那么运行时生成的数据对象似乎更容易处理。

0

如果您处于真正处理数据的情况,那么我认为使用记录是很好的。

一些典型场景:

  • 报告
  • 批量更新
  • 绑定名称/值数据下拉列表中的情况下,当建筑对象就是矫枉过正。
  • 在内存中关系数据缓存
  • 大量数据

然而,正如你指出这些方案的执行操作是在一个典型的应用OO少数。

相关问题