繁体   English   中英

在对象字段中使用动态数组是一种好习惯吗?

[英]Is it good practice to use a Dynamic Array in an object field?

我正在将一些现有的Delphi代码重构为一个类。

当前代码使用定义为array of byte的动态数组array of byte全局变量。 在初始化时,代码计算出数组的大小,并使用SetLength来分配它。 它既可以作为获取数据的缓冲区,也可以作为后续处理的运行时容器。

我想将此变量作为对象属性之一移动。

但我不确定是否可以保持其类型。 这被认为是好的做法吗?

我正在考虑的替代方案是将其转换为像TList这样的动态容器。 我将保留用于获取数据的相同代码,使用本地动态数组,但在其余生中将其移动到容器中。 值得努力吗? 我知道优雅总是在最后得到回报,但我现在并没有真正看到努力的价值。 有什么想法吗?

我知道优雅总是在最后得到回报,

是这样吗? 请注意,更改工作代码始终包含破坏某些内容的风险。 如果获得的优雅是值得冒险的话,必须在每种情况下决定恕我直言。

在您的情况下,如果您在运行时添加和删除项目,我会使用TList因为这些操作更容易。 如果您只是初始化一次长度并且数组在初始化后保持不变,则可以保留动态数组。 绝对没有“好的做法”说你不应该使用动态数组。

动态数组很棒,但实际上只适用于固定维度。 如果它们必须增长,特别是在单个记录增量中,这可能会导致内存管理器的最终错误(以及可能的性能问题),因为必须重新分配阵列并将其复制到新的更大目标。 TList至少有一个“增长”机制,不常被称为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM