在方法调用中传递可变对象会将对象暴露给被调用者修改,这可能是也可能不是调用者的意图,如下例所示:
service.configure(parameters);
它可能 (1) 告诉服务“为自己配置这些参数”,或者它可能 (2) 要求服务“为我配置这些参数”。
在第一种情况下,您可以通过将保护性副本传递给服务来保护对象不被修改(在某些语言中,您可以按值传递它)。在第二种情况下,您故意传递对象以对其进行修改。有很多可能性,各有利弊,但清楚地记录你的意图总是有帮助的。
您是否知道将参数标记为“只读”或“允许修改”的注释?讨论已打开...