这两种方法计算出一个单体的导数,但是我不明白它们之间的区别是什么,它们是否做同样的事情?为什么一个要返回,另一个要更改调用对象?
哪一个更好?
通常,我应该如何返回对象?

public Monom Der()
{
    double a = this.get_coef() * this.get_pow();
    int b = this.get_pow() - 1;
    return new Monom(a, b);
}

public void Der()
{
        this.set_coefficient(this._power * this._coefficient);
        this.set_power(this._power - 1);
}

最佳答案

这个

public Monom Der() {
    double a = this.get_coef() * this.get_pow();
    int b = this.get_pow() - 1;
    return new Monom(a, b);
}


不会更改实例的状态,当您要具有不可变的对象时,此功能很有用。它可以用于处理初始状态和处理后状态的两种状态

Monom initialMonom = new Monom(2, 2);
Monom theNewMonom = initialMonom.Der();
// do something with both initialMonom and theNewMonom


这个

public void Der() {
    this.set_coefficient(this._power * this._coefficient);
    this.set_power(this._power - 1);
}


更改当前实例的状态,因此该实例不是不可变的。当需要重用实例时,它会很有用

Monom initialMonom = new Monom(2, 2);
// do something with initial monom
initialMonom.Der(); // mutate the initial monom
// do something with the new state

10-05 19:36