Я пишу Java уже почти год, и я видел 2 разных соглашения о том, как люди реализуют свои сеттеры.
Чтобы проиллюстрировать это, приведены примеры обеих конвенций. (Я хотел бы также знать краткие имена этих двух паттеров)
Классы, используя первое соглашение, ничего не возвращают из своих методов 'set'. Например:
public class Classic{
private double _x;
private double _y;
public Classic(){
x = 0;
y = 0;
}
public void setX(double d){//or boolean with a type check on input
x = d;
}
public void sety(double d){
y = d;
}
}
Классы, использующие альтернативное соглашение, возвращаются из своих методов настройки. Например:
public class Alternative{
private double _x;
private double _y;
public Alternative(){
x = 0;
y = 0;
}
public Alternative setX(double d){
x = d;
return(this);
}
public Alternative sety(double d){
y = d;
return(this);
}
}
Разница заключается в том, что с синтаксисом альтернативного подхода, например
Alternative NewAlt(double x,double y){
return(new Alternative()
.setX(x)
.setY(y));
}
Возможно, в то время как с классической настройкой такой же метод factory выглядят так.
Classic NewAlt(double x,double y){
Classic temp = new Classic();
temp.setX(x);
temp.setY(x);
return(temp);
}
Это спорно, какой из них является более удобным для чтения/годным к употреблению.
Мой вопрос касается разницы в производительности между этими двумя шаблонами. Он существует? Если да, то насколько велика разница и откуда она возникает?
Если нет разницы в производительности, какая из них считается лучшей практикой?