2

命令-查询分离“规定每个方法要么是执行操作的命令,要么是向调用者返回数据的查询,但不能两者兼而有之。换句话说,提出问题不应改变答案。”

a = [1, 2, 3]
last = a.pop

在这里,在 Ruby 中,pop命令返回从数组中弹出的项目。

这是一个方法中的命令查询示例,似乎有必要这样做。

如果是这种情况,拥有一个本质上既是查询又是命令的方法真的是代码异味吗?

4

1 回答 1

4

堆栈弹出是 CQS 的一个众所周知的例外。 Martin Fowler指出这是打破规则的好地方。

我会说在这种情况下它不是代码气味,但总的来说它代码气味。

于 2013-10-22T15:46:03.200 回答