代碼冗余
編輯在編程中,代號余是指計算機程序的源代碼或部分冗余(“多余”)的術語。
特別是在技術上,“冗余”一般是指多個組件。 就程序代碼而言,冗余代碼是指多個相同的源代碼部分(源代碼克隆)。
通常,“冗余代碼”被理解為程序指令部分中的文本副本;程序的數據定義中也可能存在冗余(以及死代碼)。
代碼冗余也可能發生在不同的程序中——例如,如果相同的功能部分在多個程序中單獨編程/編碼,而不是作為子程序調用或包含在 inCLUde 語句中。
不同的含義/定界:即使死代碼有時也被稱為冗余代碼,因為它在形式上看起來是“多余的”,但它并不是冗余的。
含義
編輯由于各種原因,所有形式的冗余代碼都被認為是不受歡迎的或有缺陷的軟件質量。 因此,冗余代碼浪費了其他線程所缺少的 CPU 時間。 此外,重復代碼會浪費內存,并可能導致在 CPU 的指令緩存中緩存不必要的指令。 代碼登記余降低了可維護性,增加了記錄代碼的工作量,并引入了更多的錯誤。 它還經常對指標產生負面影響,并使程序驗證更加困難。
然而,根據情況,也可以故意創建冗余代碼:例如,旨在保留初步或以前的源文本部分,出于某些原因保留多次(參見源代碼克?。?,沒有不利的意義具有給定的優勢(例如,具有非常小的代碼片段) - 或者存在軟件測試要檢測的目標的錯誤(尤其是死的/無法訪問的代碼)。
例子
編輯int foo (int x) { int y = 100 / x; // 代碼在 x = 0 處拋出異常并退出程序 int z = x * x; // 計算重復下面兩行 if (z >= 0) return x * x; // 冗余計算,優化掉編譯器,調用Common Subexpression Elimination return -1; // 輸入 46341…65535、80265…92681、103622…113511、122607…131071, ...(假設 32 位整數)達到代碼}
- 死代碼 - 在示例中,第 2 行中,數字 100 除以 x,但從未使用過結果。 因此它是死代碼。 但是,如果 x 為零,則會拋出異常。 因此,刪除此代碼將導致功能發生變化。 但是,由于拋出異常永遠不應成為功能的一部分,因此這是需要刪除的損壞功能。
- 代碼登記余 - 該示例在第 3 行和第 5 行中對 x 進行平方,但中間的 x 沒有變化。 結果總是一樣的,所以代碼是多余的。 因此,在第 5 行返回 z 是合適的。
- 無法訪問的代碼 - 在示例中,永遠不會到達第 7 行,因為第 4 行中的查詢 z >= 0 始終為真,并且在第 5 行中該方法退出。 所以第 7 行是不可達代碼。
- 不必要的代碼 - 由于第 4 行中的查詢 z >= 0 始終為真,因此它沒有意義,也可以刪除。 不必要的代碼不屬于上述三類中的任何一類,但通常稱為死代碼。
原因
編輯代號志余由以下人員創建
分析
編輯發現冗余代碼是靜態代碼分析的一種形式,需要密切的控制流分析以找到獨立于變量和其他運行時條件的代碼。 借助合適的分析工具,可以找到冗余代碼部分。
內容由匿名用戶提供,本內容不代表www.csydxx.cn立場,內容投訴舉報請聯系www.csydxx.cn客服。如若轉載,請注明出處:http://www.csydxx.cn/366081/