簡體   English   中英

同時優化和可測試性 - 如何將代碼分解為更小的單元

[英]Optimization and testability at the same time - how to break up code into smaller units

我試圖打破一個漫長的“主要”程序,以便能夠修改它,也可能對它進行單元測試。 它使用了一些巨大的數據,所以我猶豫了:

什么是最好的:具有函數調用,可能傳遞極大(內存)數據,

(a)按價值,或

(b)參考

(非常大,我指的是一些結構和小類的矢量的地圖和矢量......甚至圖像......可能非常大)

(c)或者擁有所有功能都可以訪問的私人數據? 這也可能意味着main_processing()或者其他東西可以有所有這些的向量,而某些函數只有一個項目...具有可測試的函數的優點。

我的問題雖然與優化有關,但我試圖將這個怪物打破成寶貝怪物,我也不想耗盡內存。

如果我創建局部變量,我不清楚我將擁有多少數據副本。

有人可以解釋一下嗎?

編輯:這不是一個通用的“如何將一個非常大的程序分解成類”。 該程序是大型解決方案的一部分,已經分解為小型實體。

我正在查看的可執行文件雖然相當大,但它是一個單獨的實體,具有不可分割的數據。 因此,數據將全部創建為單個類中的成員變量,我已經創建了它,或者它(所有這些)將作為函數的參數傳遞。

哪個更好 ?

如果您需要單元測試,則不能“擁有所有功能都可以訪問的私有數據”,因為這樣,所有這些數據都將成為每個測試用例的一部分。

因此,您必須考慮每個函數,並准確定義它工作的數據部分。 至於函數參數和返回值,它非常簡單:對小對象使用pass-by-value,對大對象使用pass-by-reference。

您可以將猜測用於分隔小型和大型的閾值。 我使用規則“8很小,任何更大”但對我的系統有益的是對你的同樣好。

這似乎更像是關於OOP的一般性問題。 將數據拆分為邏輯分組的概念(類),並將與這些數據元素一起使用的代碼與數據(成員函數)放在一起,然后將它們與組合,繼承等結合在一起。

您的問題太廣泛,無法提供更具體的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM