[英]Whats a Strong Argument against Variable Redundancy in c code
我從事安全關鍵應用程序開發。 最近作為一名代碼審查員,我抱怨下面顯示的編碼風格,但無法提出有力的反對意見。 那么什么是反對這種可變冗余/重復的好論點,我正在尋找可能導致問題或可能失敗的測試用例的情況,而不僅僅是編碼風格。
//global data
// global data
int Block1Var;
int Block2Var;
...
//Block1
{
...
Block1Var = someCondition; // someCondition is an logical expression
...
}
//Block2
{
...
Block2Var = Block1Var; // Block2Var is an unconditional copy of Block1Var
...
}
我認為多一點背景可能會有所幫助。
您可能會爭辯說,不能保證 Block1Var 的值在並發訪問/修改中保持不變。 這僅在 Block1Var 發生變化(即不僅被讀取)時才有效。 我不知道你是否關心多線程應用程序。
可讀性也是一個重要問題。 未來的代碼維護者不想跟蹤一堆瑣碎的任務。
取決於以后對這些變量做了什么,但一個論點是它不是面向未來的。 如果將來更改代碼以更改 Block1Var 的值,但稍后使用 Block2Var(沒有額外更改),那么這將導致錯誤行為。
如果顯示的函數上下文達到一定長度(我假設已經丟棄了很多細節來為這個問題創建最小的可重現示例),下一步可能是從 Block 創建一個新的(子)函數2. 這個子函數應該開始將Block1Var
(-> 實參)分配給Block1Var
(-> Block2Var
參)。 如果函數的其余部分沒有其他耦合,則可以將塊 2 的其余部分刪除並將其作為函數定義刪除,並且只需通過子函數調用替換賦值。
我的回答相當投機,但我已經看到很多案例,這種策略幫助我標記有用的點,以便在開發過程中后期拆分復雜的功能。 當然,這種解釋僅適用於開發的中間階段,不適用於聲明為“准備發布”的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.