在方法调用中传递可变对象会使该对象暴露给被调用者修改,这可能是也可能不是调用者的意图,如下例所示:
service.configure(parameters);
它可能 (1) 告诉服务“使用这些参数配置您自己”,或者它可能 (2) 要求服务“为我配置这些参数”。
在第一种情况下,您可以通过将保护副本传递给服务来保护对象免受修改(在某些语言中,您可以按值传递它)。在第二种情况下,您故意传递对象以对其进行修改。可能性有很多种,各有利弊,但清楚地记录您的意图总是有帮助的。
您是否知道将参数标记为“只读”或“允许修改”的注释?讨论已开始...
最佳答案
针对jsr305中的javax.annotation.concurrent.Immutable
,我开始使用Mutable
注释,这意味着“这个对象将被修改”。没有与之相关的 findbugs 检查;它只是改进了文档。示例:
service.configure(@Mutable parameters);
现在您一眼就能看出参数
可能会发生更改。
关于java - 使用注释来记录参数传递策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901827/