在我工作的公司,有一份文档描述了我们应该在 Java 中遵守的良好实践。其中之一是避免返回的方法,this
例如:
class Properties {
public Properties add(String k, String v) {
//store (k,v) somewhere
return this;
}
}
我会有这样的课,这样我就可以写:
properties.add("name", "john").add("role","swd"). ...
这种成语我见过很多次了,喜欢在StringBuilder
里面并没有发现任何问题。
他们的论点是:
... 可能是同步问题的根源或对目标对象状态的预期失败。
我想不出这可能是真的情况,你们谁能给我一个例子吗?
编辑该文档没有指定任何关于可变性的内容,所以我看不出链接调用和执行之间的区别:
properties.add("name", "john");
properties.add("role", "swd");
我会尝试与发起人取得联系,但我想在我的枪上膛的情况下这样做,这就是我发布这个问题的原因。
已解决:我与其中一位作者交谈,他的初衷显然是避免释放尚未准备好的对象,例如在 Builder 模式中,并解释说如果在调用之间发生上下文切换,则对象可能在无效状态。我认为这与返回无关,this
因为您可能会犯同样的错误,购买一个一个调用方法,并且更多地与正确同步构建过程有关。他承认该文件可能会更加明确,并将很快对其进行修改。胜利是我/我们的!