2

コマンドとクエリの分離は、「すべてのメソッドは、アクションを実行するコマンドか、呼び出し元にデータを返すクエリのいずれかである必要があるが、両方であってはならないことを示しています。つまり、質問をしても答えが変わるべきではありません。」

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

ここで、Ruby では、popコマンドは項目が配列からポップされて返されます。

これは 1 つのメソッド内のコマンドとクエリの例であり、そうする必要があるようです。

この場合、本質的にコマンドであると同時にクエリでもあるメソッドを持つことは、本当にコードの匂いでしょうか?

4

1 に答える 1

4

スタック ポッピングは、CQS のよく知られた例外です。 Martin Fowlerは、ルールを破るのに適した場所であると指摘しています。

この場合はコードの匂いではないと思いますが、一般的にコードの匂いです。

于 2013-10-22T15:46:03.200 に答える