死程式碼

死程式碼（dead code）有幾種不同的定義。有一種定義是指程式運行時永遠不會執行到的程式碼（記憶體裡的指令）  DO-178B Wikipedia/DO-178B.。在一些程序设计的領域中，死程式碼是指源代码中有執行，但其他程式沒有使用該執行結果的程式Debray, S. K., Evans, W., Muth, R., and De Sutter, B. 2000. Compiler techniques for code compaction. ACM Trans. Program. Lang. Syst. 22, 2 (Mar. 2000), 378–415.Andrew Appel 1998 Modern Compiler Implementation in Java. Cambridge University Press.。死程式碼會浪費記憶體，若是有執行的死程式碼，還會浪費執行時間。

死程式碼的結果雖然不會被其他程式使用，但程式碼可能會抛出异常或是影響全域變數，因此移除死程式碼有可能會影響程式輸出並引入未預期的程序错误。編譯器在進行死碼刪除時，若某程式不確定是否會影響最後輸出，編譯器最佳化會比較保守。程式設計者也可以幫助編譯器，利用靜態函式、内联函数，並且啟動。

 范例 

int foo (int iX, int iY)
{
	int iZ = iX/iY;

	return iX*iY;
}

在上述例子中，尽管计算了除以的结果，但其从未被使用，并且当等于0时程序会抛出异常。因此移除这段代码可能会改变程序的输出。

 分析 

死碼刪除是优化编译器中的功能，刪除程式中的死碼。死碼分析可以用來進行，這屬於靜態程序分析和数据流分析。而不可達程式碼分析是另一種分析，是以控制流分析為基礎。

死碼刪除技術和刪除和冗餘代碼刪除是同一類的最佳化。

在大型程式專案中，有時很不容易識別並且刪除死程式碼，特別是在整個模組都是死代碼的情形下。測試腳手架（Test scaffolding）有可能會讓程式碼看起來仍存活，有時契約語言會要求交付一些已不相關的程式碼Douglas W. Jones Dead Code Maintenance, Risks 8.19 (Feb. 1, 1989) 。

有些IDE（像Xcode、Visual Studio 2010Habib Heydarian, Microsoft Corp和Eclipse GalileoEclipse Developer Guide）可以在編譯過程中找出死程式碼。

大部份的最佳化技術是希望在程式實現時移除死程式碼，但在對程式碼大小有極致要求的最佳化中，有時會刻意引入一些看似無用的程式碼，並且小心的編寫這些程式碼，因為這些程式碼可以將一些無關的程式區塊集中在一起（因此減少其大小），這段額外的程式碼不會影響程式碼的主要執行路徑，而是用於執行其他執行路徑所需的操作，而在其他執行路徑下，會有其他的程式碼段未使用到。可能因此成為無用程式碼。從更具體的功能層面來看，這可以看作是人為地引入無害/有用的副作用，也可以看作是減少程式碼冗餘。此外，這種方法還可以應用到操作碼級別，從而允許使用更短的指令。如果沒有刻意引入由無用程式碼產生的副作用，在合併程式碼序列時是無法實現這一點的。
 相關條目 
 死碼刪除
 代碼冗餘


 0xDEADC0DE是用Hexspeak寫的魔術數字，是OpenWrt韌體裡的標示。

 參考資料 

外部連結 
 Dead Code Detector (DCD) simply finds never used code in your Java/JEE applications
 Comparisons of some Java Dead Code Detector
 UCDetector Eclipse PlugIn to find dead java code

Category:编译原理
Category:源代码
Category:软件异常