【发布时间】:2011-01-13 23:52:03
【问题描述】:
我们可以使用许多工具来显示模块、源代码文件、类或函数等之间的依赖关系。但似乎没有工具可以分析变量之间的依赖关系。给定变量的依赖图将有助于理解和重构代码。
例如,如果变量b只用于计算变量c的值,如下:
b = a;
....
c = b + 2;
也许我们可以删除变量 b 以使代码更具可读性:
....
c = a + 2;
如果代码非常复杂或有很多难闻的气味,这种重构可能会很困难。
有没有什么工具可以分析c#或其他编程语言中变量之间的依赖关系?
【问题讨论】:
-
“变量”是指具体的“局部变量”,还是指局部、形参、数组元素、字段和取消引用的指针?您是否关心 lambda 的外部变量?拉姆达参数? lambdas 中的本地人?在迭代器块中提升本地人?分析任意变量之间的关系可能非常复杂,比仅使用局部变量要复杂得多,尤其是当您考虑通过“ref”参数进行变量别名时。
-
Eric Lippert:可以分析的“变量”类型越多,代码的重构工作就越容易。当我尝试重构遗留代码时,我发现通常存在许多复杂的依赖关系。
标签: c# variables refactoring dependencies static-analysis