我正在处理一个对象,特别是它的一个函数,它看起来像这样:

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 )并继续使用您的单元测试来检查重构是否破坏了任何东西。

编辑:

要找出还有什么改变了 PawTongue 类的属性,您可以在 bark() 使用的任何属性上设置修改观察点(即在属性上设置断点,右键单击断点,断点属性,取消勾选“访问”) ,然后当您在调试器中运行您的应用程序时,每次更改属性时,调试器都会停止。

10-07 12:14