我正在处理一个对象,特别是它的一个函数,它看起来像这样:
public class Dog {
private ArrayList<Paw> paws;
private double age;
private Tongue tongue;
public Dog(ArrayList<Paw> paws, double age, Tongue tongue) {
this.paws = paws;
this.age = age;
this.tongue = tongue;
}
public void bark() {
// ... about 100 lines of side effects operating
// on the object's global members ...
}
}
我真的很想修复这些副作用并将对象重构为只做一件事的函数。
Eclipse 中是否有自动过程来标记可能的副作用?
如果没有,是否有我可以遵循的手动算法,这样我就不会迷失在兔子洞里?
最佳答案
我会创建一个单元测试来测试你的旧 Dog
类,包括所有的“副作用”(不太清楚你在这里的意思)。
假设您的单元测试通过,然后您可以开始重构(使用 Eclipse,选择适当的行并使用右键单击,重构,提取方法可能是您的 friend )并继续使用您的单元测试来检查重构是否破坏了任何东西。
编辑:
要找出还有什么改变了 Paw
和 Tongue
类的属性,您可以在 bark()
使用的任何属性上设置修改观察点(即在属性上设置断点,右键单击断点,断点属性,取消勾选“访问”) ,然后当您在调试器中运行您的应用程序时,每次更改属性时,调试器都会停止。