2014-11-06 67 views
0

我目前正在制定一個指導方針,以提高嵌入式系統領域基於模型的C編程的可測試性。有效劃分大功能

我遇到的第一件事是他們創建了非常大的(例如4k行)函數。 對於測試問題,我想建議將代碼分成小塊。 但我發現了一些問題,並想現在解決這個問題的最有效的方法。

想象一下前面的4k行函數有10個局部變量。
現在我需要將這些變量傳遞給每個使用它們的函數。 什麼是最好的,這意味着最有效的方式來做到這一點。

目前我有兩個想法,都具有一些缺點:

  1. 按引用傳遞當地人給需要它們的功能。我需要使用引用,因爲許多函數會改變有關變量的內容。缺點:引用去堆 - >速度降低。
  2. 使當地人在文件級別可見。缺點:由於變量具有更長的使用期限,所以整體內存使用量更大。

是否有其他方法可以減少缺點?

+0

對於currios人來說:模型開發的工具是ASCET – lsteinme 2014-11-06 10:21:26

回答

4

如果整個4000行函數設法獲得10個變量,我認爲你可以算你幸運。

我會通過收集結構中的變量來清理它,該結構在第一個函數內實例化,然後通過傳遞給它們一個指針與子函數共享。性能應該非常接近你所擁有的。

此外,C中沒有「引用」,使用該術語可能會引起混淆。

+0

以及10其中輕描淡寫,有更多像30-40 – lsteinme 2014-11-06 10:24:38

+0

reallity我同意,我可以補充說,要麼變量是相關的,這就是爲什麼子功能需要所有這些變量(然後使用一個結構)或變量不相關,IMO不同的子功能將需要變量的不同子集。 – Emilien 2014-11-06 10:25:24

+0

它更像每個功能都需要其中的一些功能 – lsteinme 2014-11-06 10:28:23

1

形成一個結構,它具有要傳遞的變量並將該結構變量/結構指針發送給您調用的任何函數。這將減少傳遞更多的參數