随着时间的推移,我倾向于创建对我不再有用的方法。我想我已经将所有代码都移出了他们但也许没有。或者,也许代码引用旧方法,一切正常,直到我点击那个让我创建新方法的特殊事物。
除了在每种方法上使用find之外,还有什么方法可以看看在哪里使用?
我想删除未使用的方法。感谢。
我正在使用Visual Studio 2008 Express。
答案 0 :(得分:9)
右键单击方法名称时,可以在上下文菜单中选择“查找所有引用”。
答案 1 :(得分:2)
我有时这样做的一种方法是将原型保留在类定义中,然后删除实现(用#if 0
和#endif
包围它们),然后构建应用程序。链接器将列出它需要查找的任何方法以及它们的调用位置。未列出的任何方法都不会被任何人调用。
请注意,这不是特定于Visual Studio,它适用于任何C / C ++项目。
答案 2 :(得分:1)
像我这样简单,愚蠢的人使用的简单,愚蠢的方法:
将XX添加到每个方法名称,如FooXX,然后编译。
当编译器说Foo丢失时,从Foo中删除XX。继续这样做,直到你不再缺少参考文献。
然后删除名称中包含XX的所有方法。
但“查找所有引用”方法更好。
答案 3 :(得分:1)
如果您使用的是托管语言,则无法确定肯定会使用的所有功能。您可以为代码中的每个函数执行“查找所有引用”,这将使您对代码中明确且静态绑定的每个函数都具有高度的置信度。
但是,反射确实会引发一个问题。它允许在运行时绑定函数,并且没有可靠的方法在代码中搜索它。选择方法名称的字符串甚至可以提供用户提供的值。
C ++在这里真的不是更好。可以通过使用指针魔术和偏移来非静态地绑定方法。
简而言之,无论您使用何种语言,都没有万无一失的方法可以做到这一点。
答案 4 :(得分:1)
您可以随时注释掉它们并尝试重新编译。编译器会让你知道缺少什么。
答案 5 :(得分:1)
您可以重命名所有方法(在名称前面放置一个xxx),然后尝试重新编译。 对于使用的每种方法,您将收到错误。将关联的方法重命名回正确的名称,然后再次尝试编译。
完成后 - 所有未使用的方法都以'xxx'开头。
您需要执行此操作几次,因为您可能使用未使用的方法来调用其他未使用的方法。
答案 6 :(得分:1)
Uncle Bob and crew有一个很好的练习来解释完全符合你需要的接口隔离原则。
首先,制作一个空白界面。其次,让你的课程有问题实现所说的界面。最后,将类的实例更改为接口的实例。编译时,它会显示您需要实现的方法,或者换句话说,实际使用的是哪些方法。
答案 7 :(得分:0)
在Visual Studio中右键单击方法名称并选择查找用法?或者查找高级用法?
我只是不确定它是基本的VS功能还是来自我的ReSharper。但它至少对我而言:D