2011-03-05 25 views
0

如何判斷方法是否永遠不會被使用?代碼優化 - 未使用的方法

我知道,DLL文件和庫文件就可以知道是不是真的,如果別人(另一個項目)將永遠使用代碼。

總的來說,我認爲任何公衆可能在其他地方使用。
但私人方法呢?假設我沒有看到對該方法的明確調用是否安全,它將不會被使用?

我認爲對私有方法很容易確定。但是,僅僅爲私人方法決定是否安全?

+0

這是關於如何在通用決定它一個一般性的問題,另外一個是C#編譯器的具體 –

回答

0

取決於語言,但常見的是,不使用出口,在程序中出現一次,並且是不公開姓名/。有一些例外,如構造函數和析構函數,運算符重載(在C++和Python中,定義點名稱與調用站點名稱不匹配)以及其他各種方法。

例如,在Python中,爲了允許建立索引(foo[x]),您可以在foo所屬的類中定義方法__getitem__。但你很難明確地打電話給__getitem__

0

你需要什麼知道(或所有可能的)入口點(縣)代碼:

  • 對於一個簡單的命令行程序,這是「主」的方法或,在最簡單的情況下,腳本的頂部。
  • 對於圖書館來說,事實上,它是從外部可見的一切。
  • 情況變爲更復雜的方法,如果能夠從外部通過內省來引用。這是語言特定的,需要知道所用技術的細節。

你需要什麼是遵循所有入口點的所有引用遞歸來標記所有使用的方法。任何未標記的內容都可以安全地刪除 - 並且should

由於這是一項勤奮但常規的工作,因此有各種可用於各種編程語言的工具。示例包括用於C#的ReSharper或用於Java的ProGuard