私は早すぎる最適化が悪の根源だと読んでいます。時間がかかり、コードが複雑になります。パフォーマンスが大幅に向上しない場合でもデータベースのクエリ数を減らす必要がありますか?
場合によっては、IDで項目を取得する必要が生じることがあります。これはクイッククエリです。
その後、同じリクエストで、このアイテムの情報をもう一度別の関数で必要とします。
もう一度クエリを呼び出すのは悪いですか?または、エンド・ユーザーが気付かないように数ミリ秒を節約したとしても、取り出したオブジェクトを再利用する必要があります。多くのユーザーが同じクエリを同時に実行している場合を除きます。
[OK]を、ここでの例のようになります。
function getItem()
{
$item = null;
if ($someCondition) {
$item = $this->repository->getById(1);
}
someFunction($item);
}
function someFunction($item)
{
if ($item == null) {
$item = $this->repository->getById(1);
}
doSomething($item);
}
だからsomeFunctionに、私たちは、チェックを追加 - アイテムをフェッチするかどうかを知るために追加のロジックを。この単純な例では、ロジックを追加するのに問題はありません。
しかし、実際のアプリケーションでは、項目を2回目に最適化してフェッチしないために、さらに多くのロジックを追加する必要があります。
もっと論理 - コードを書いて読む時間が増えます。
ORMは最適化を心配していない例です。ORMはDoctrineのような関連アイテムを遅延ロードするだけです。したがって、開発者として、他のテーブルを結合するクエリを記述しないことで時間を節約できます。
一部のプログラマーは、同じクエリーを2回実行するとそのコードを避けることができます。
場合によっては最適化するのに30分か1時間かかることがあります。追加すると、これにより生産性が低下する可能性があります。
これらのケースではどうすればよいですか?
これ以上のデータはありません。問題は、同じデータをクエリして、生産性を高め、コード内のロジックが少ないことです。 –
上記の場合、パフォーマンスが低下するだけでなく、メンテナンスも必要になります。 someFunction()は、渡されたオブジェクトに対して、どの項目のアクションを取らなければならないかを知っていても、それを処理しなければなりません。はっきりと明確に定義された責任でより明確になります。 –