На этом примере...
Код: Выделить всё
public class Quaternion {
private double q0,q1,q2,q3;
public Quaternion slerp(Quaternion other, float amt){
// Some calculations
// First option return this and update the object
return this;
// Second option - Create a new Instance
return new Quaternion(res.getQ0(), res.getQ1(), res.getQ2(), res.getQ3());
}
}
Существует ли какое-либо соглашение о том, как разработать такой метод, который предназначен для свободного использования с другими функциями (умножение, поворот, сопряжение)? Например, классы BigDecimal и BigInteger предназначены для возврата нового объекта вместо возврата текущего экземпляра. С другой стороны, некоторые библиотеки используют подход return this.
Со своей стороны я считаю...
Код: Выделить всё
Quaternion result = start.slerp(other, 0.25f); // return new object
Код: Выделить всё
start.slerp(other, 0.25f); // return this
Есть ли у вас какой-либо опыт в этом отношении? Является ли один из этих подходов (например, new для неизменяемого, return this для изменяемого) более широко используемым, или это просто вопрос выбора одного подхода, а не его использования во всем API?
Подробнее здесь: https://stackoverflow.com/questions/395 ... onventions
Мобильная версия