簡體   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