簡體   English   中英

c 代碼中反對可變冗余的有力論據是什么

[英]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.

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