Mik*_*378 0 java design-patterns coding-style
命令查询分离建议每个方法应该是执行操作的Command,或者是将数据返回给调用者的Query:
但是比如String类的replace()方法呢.
它的签名是:String replace(String str);
它违反了CQS,不是吗?
承认它违反了,我看不出我们如何解决它,以便作为Command的replace()可以通知调用者最新的String.实际上,根据CQS的命令必须具有返回类型的空白.
我不知道它是如何违规 - 当然这是一个查询,因为它询问有关数据的问题:如果我们有原始字符串,但每次使用X而不是Y,我们会得到什么?
它显然不是副作用的命令 - 它不可能,因为字符串是不可变的.
我不会声称自己是接近 CQS专家的任何东西,但这String.replace
听起来更像是一个查询,而不是一个命令给我.
归档时间: |
|
查看次数: |
119 次 |
最近记录: |