gpt4 book ai didi

java - String类的 `replace()`方法是否违反了命令查询分离?

转载 作者:行者123 更新时间:2023-12-01 07:13:29 24 4
gpt4 key购买 nike

命令查询分离建议每个方法要么是执行操作的命令,要么是向调用者返回数据的查询:

但是,例如 String 类的 Replace() 方法呢?

它的签名是:String Replace(String str);

这违反了 CQS,不是吗?

承认它违反了,我不知道我们如何修复它,以便作为命令的replace()可以通知调用者最新的字符串。事实上,根据 CQS 的命令必须具有 void 作为返回类型。

最佳答案

我不明白这是如何违规的 - 当然它是一个查询,因为它提出了一个有关数据的问题:如果我们有原始字符串,但每次使用 X 而不是 Y,我们会得到什么?

这显然不是一个有副作用的命令 - 它不可能是,因为字符串是不可变的。

我不会声称自己是 CQS 方面的专家,但对我来说,String.replace 听起来更像是一个查询,而不是一个命令.

关于java - String类的 `replace()`方法是否违反了命令查询分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com