代码优化 - 未使用的方法

时间:2011-03-05 15:14:49

标签: language-agnostic optimization methods

如何判断是否永远不会使用某种方法?

我知道对于dll文件和库,你真的不知道其他人(另一个项目)是否会使用该代码。

一般来说,我认为任何公开的东西都可以在其他地方使用 但私人方法怎么样?是否可以安全地假设如果我没有看到对该方法的显式调用,则不会使用它?

我认为对于私有方法,它更容易决定。但是,仅仅为私人方法做出决定是否安全?

2 个答案:

答案 0 :(得分:0)

取决于语言,但通常,不使用在程序中出现一次且不公开/导出的名称。还有一些例外,例如构造函数和析构函数,运算符重载(在C ++和Python中,定义点处的名称与调用站点上的名称不匹配)和各种其他方法。

例如,在Python中,要允许索引(foo[x])起作用,可以在__getitem__所属的类中定义方法foo。但你几乎不会明确地致电__getitem__

答案 1 :(得分:0)

知道所需要的是 (或所有可能的)代码入口点:

  • 对于一个简单的命令行程序,这是“主要”方法,或者在最简单的情况下,是脚本的顶部。
  • 事实上,对于图书馆而言,它是从外面可见的一切。
  • 如果可以通过内省从外部引用方法,情况会变得更加复杂。这是特定于语言的,需要了解所使用技术的细节。

执行所需要的是递归地跟踪所有入口点的所有引用,以标记所有使用的方法。无论未标记的是什么都可以安全地 - should - 被删除。

由于这是一项勤奋但常规的工作,因此有各种工具可用于各种编程语言。示例包括C#的ReSharper或Java的ProGuard