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

标签 java design-patterns annotations findbugs

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

service.configure(parameters);

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

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

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

最佳答案

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

service.configure(@Mutable parameters);

现在您一眼就能看出参数可能会发生更改。

关于java - 使用注释来记录参数传递策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901827/

相关文章:

java - @事务被忽略

javascript - 如何使 javascript 库在 Node js 中工作以进行服务器端操作

c# - 如果属性使用注释属性,为什么 setter 必须为空?

java - 调用函数 getConnection() 时线程 "main"java.lang.StackOverflowError 中出现异常

java - 当id(主键)大于1时,如何获取EntityManager.getReference?

java - 用于将 SGML 转换为 XML 的正则表达式

java - 对于简单的国际象棋游戏来说,实现状态模式是一个好的设计选择吗?

architecture - DTO DAO POCO BO

Ant 中的 Java 编译错误 : using class literals in annotations

java - 如何基于带注释的参数编写方面切入点