使用注释来记录参数传递策略?

时间:2013-04-09 12:24:20

标签: java design-patterns annotations findbugs

在方法调用中传递可变对象会将对象公开给被调用者进行修改,这可能是也可能不是调用者的意图,如下例所示:

service.configure(parameters);

它可以(1)告诉服务“用这些参数配置自己”,或者它可以(2)询问服务“为我配置这些参数”。

在第一种情况下,您可以通过将保护副本传递给服务来保护对象不被修改(在某些语言中,您可以通过值传递它)。在第二种情况下,您故意传递该对象以便对其进行修改。有许多可能性,都有其优点和缺点,但它总是有助于清楚地记录您的意图。

您是否知道将参数标记为“仅供读取”或“允许修改”的注释?讨论已打开...

1 个答案:

答案 0 :(得分:0)

针对来自jsr305的javax.annotation.concurrent.Immutable,我开始使用Mutable注释,这意味着“要修改此对象”。没有与它相关的findbugs检查;它只是改进了文档。例如:

service.configure(@Mutable parameters);

现在,您可以乍一看parameters可能会被更改。