Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby “的例外情况”;命令查询分离“;规则?_Ruby_Command Query Separation - Fatal编程技术网

Ruby “的例外情况”;命令查询分离“;规则?

Ruby “的例外情况”;命令查询分离“;规则?,ruby,command-query-separation,Ruby,Command Query Separation,声明每个方法都应该是执行操作的命令,或者是向调用者返回数据的查询,但不能两者都是。换句话说,提问不应该改变答案 在Ruby中,pop命令返回从数组中弹出的项 这是一个在一个方法中执行命令和查询的示例,似乎有必要这样做 如果是这种情况,那么拥有一个本质上既是查询又是命令的方法真的是一种代码味道吗?堆栈弹出是CQS的一个众所周知的例外。注意到这是一个打破规则的好地方 我想说,在这种情况下,它不是一种代码气味,但通常是一种代码气味。堆栈弹出是CQS的一个众所周知的例外。注意到这是一个打破规则的好地方

声明每个方法都应该是执行操作的命令,或者是向调用者返回数据的查询,但不能两者都是。换句话说,提问不应该改变答案

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

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


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

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


我想说,在这种情况下,它不是一种代码气味,但通常是一种代码气味。

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


在这种情况下,我会说这不是一种代码气味,但一般来说,这是一种代码气味。

我个人认为,因为人们期望堆栈上的
pop
返回从堆栈顶部取下的值,所以使用两种方法只会混淆并造成混乱。真的,谁想写
last=a.peek;a、 pop
而不是
last=a.pop
只是为了理论上的“清晰”。如果你问我,那就用更清晰、更有意义的方法。编程显然不是一门精确的科学。我个人认为,因为人们期望堆栈上的
pop
返回从堆栈顶部取下的值,所以使用两种方法只会混淆并造成混乱。真的,谁想写
last=a.peek;a、 pop
而不是
last=a.pop
只是为了理论上的“清晰”。如果你问我,那就用更清晰、更有意义的方法。编程显然不是一门精确的科学。
a = [1, 2, 3]
last = a.pop