我最近发现一种编码包含冗余代码。如果我将Setter
留给(第18-21行)例如。 sumnr
,它仍然可以很好地工作。因此,该代码似乎是不必要的。但是,如果我将this.sumnr = sumnr;
(Line11)留在外面,而将Setter留在原地,那么它将不起作用。为什么设置行第18-21行中的this.sumnr - sumnr
无法备份?
有人知道吗?
public class SortSums {
private int sumnr;
private int part1;
private int part2;
private int result;
private int answer;
private String sign;
public SortSums(int somnr, int part1, int part2, int result, String sign)
{
this.sumnr = sumnr; // LINE11 this line however, seems indispensible.
this.part1 = part1; // idem
this.part2 = part2;
this.result = result;
this.sign = sign;
}
public void setSumnr(int sumnr) // LINE18 it seems that this 'void' method is redundant.
{
this.sumnr = sumnr;
} // LINE21
public int getSumnr()
{
return sumnr;
}
//etc...
因为Java从不在幕后神奇地召唤二传手。如果要在第11行上使用设置器,则需要将其替换为:
this.setSumnr(sumnr);
尽管从构造函数内部调用方法通常不是最佳实践(尽管有些人认为二传手是对该规则的一种豁免,但有些人则不然。
例如,如果我不让塞特犬(第18-21行) sumnr,它仍然运行良好。因此该代码似乎是不必要的。
不一定。这完全取决于您是否要在创建sumnr
对象后允许更改SortSums
。如果这样做,您将需要二传手。如果您不这样做,请忽略它。