代碼冗余

編輯
本詞條由“匿名用戶” 建檔。

在編程中,代號余是指計算機程序的源代碼或部分冗余(“多余”)的術語。 特別是在技術上,“冗余”一般是指多個組件。就程序代碼而言,冗余代碼是指多個相同的源代碼部分(源代碼克?。?。 通常,“冗余代碼”被理解為程序指令部分中的文本副本;程序的數據定義中也可能存在冗余(以及死代碼)。 代碼冗余也可能發生在不同的程序中——例如,如果相同的功能部分在多個程序中單獨編程/編碼,而不是作為子程序調用或包含在inc...

代碼冗余

編輯

編程中,代號余是指計算機程序的源代碼或部分冗余(“多余”)的術語。

特別是在技術上,“冗余”一般是指多個組件。 就程序代碼而言,冗余代碼是指多個相同的源代碼部分(源代碼克隆)。

通常,“冗余代碼”被理解為程序指令部分中的文本副本;程序的數據定義中也可能存在冗余(以及死代碼)。

代碼冗余也可能發生在不同的程序中——例如,如果相同的功能部分在多個程序中單獨編程/編碼,而不是作為子程序調用或包含在 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/

(5)
詞條目錄
  1. 代碼冗余
  2. 含義
  3. 例子
  4. 原因
  5. 分析

輕觸這里

關閉目錄

目錄
午夜影院在线看,污污网站在线,尤物视频在线看,蓝光电影在线