コマンドとクエリ分離原則ファンクションは抽象的な副作用をもたらしてはならない。どういうこと?コマンド オブジェクトを修正するために使われる。プロシージャとして実現される。クエリオブジェクトに関する情報を返すために使われる。フィールドとして確保されるか、ファンクションとして実現される。ファンクションについて、クエリに答えるというファンクションの公の目的を超えてオブジェクトを変更(=副作用)してはならない。どうすれば?メソッドをコマンドかクエリかのどちからに分類し、コメントにもどちらなのかを明記する。クエリに分類されたメソッドは、オブジェクトの状態を絶対に変えない。効果メソッドをコマンドと捉えると、Tell, Don't Ask(求めるな、命じよ)という考え方を強く意識できる。クエリから副作用がなくなれば、ユニットテストもしやすくなる。コマンドとクエリの分類を意識すれば、そのデータを外部から見