【问题标题】:Use annotation to document parameter passing policy?使用注释来记录参数传递策略?
【发布时间】:2013-04-09 12:24:20
【问题描述】:

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

service.configure(parameters);

它可能 (1) 告诉服务“为自己配置这些参数”,或者它可能 (2) 要求服务“为我配置这些参数”。

在第一种情况下,您可以通过将保护性副本传递给服务来保护对象不被修改(在某些语言中,您会按值传递它)。在第二种情况下,您故意传递对象以对其进行修改。有很多可能性,各有利弊,但清楚地记录你的意图总是有帮助的。

您知道将参数标记为“只读”或“允许修改”的注释吗?已打开讨论...

【问题讨论】:

标签: java design-patterns annotations findbugs


【解决方案1】:

引用jsr305中的javax.annotation.concurrent.Immutable,我开始使用Mutable注解,意思是“这个对象要被修改”。没有与之关联的 findbugs 检查;它只是改进了文档。示例:

service.configure(@Mutable parameters);

现在您可以第一眼看到parameters 可能会被更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多