【发布时间】:2011-08-26 20:42:08
【问题描述】:
是否有用于 C 或 Java 的重构工具可以简化此类冗余代码。我相信这就是所谓的数据传播。
这基本上是优化编译器会做的事情。
public int foo() {
int a = 3;
int b = 4;
int c = a + b;
int d = c;
System.out.println(c);
return c;
}
进入
public int foo() {
int c = 7;
System.out.println(c);
return c;
}
【问题讨论】:
-
如果编译器仍然这样做,你为什么要这样做?
-
这里进行了两种转换:“常量传播”和“常量折叠”。但这不是您要摆脱的“冗余”代码。这是不必要的代码。有人争辩说,放置“不必要的”代码是为了区分问题。 (其中一些可能只是愚蠢的,当然)。
-
如果a和b的值不再是3和4呢?
-
@undur_gongor:原因是出错的空间更小,一般来说,代码越少,错误就越少。
-
@Jack:是的,但是对于重构,代码必须已经正确。而且我猜在大多数情况下,精心设计的代码在可维护性/可读性方面会更好(参见 Alfredo O 的回答)。
标签: java c refactoring