条件分岐の順番にも気を使おう
条件分岐の順番にも気を使おう
- こういった条件分岐を見るとモヤモヤします
if ($foo->exists()) { // DBにレコードがなければFALSE return false; } elseif (isset($parameter['bar'])) { // パラメータにbarが含まれなかった場合はFALSEを返す return false; } else { return true; }
何がマズかったのか?
- DBにクエリを発行する処理と
isset
で値検証するだけの処理では前者の方が高コストです - コストが低い処理から順に条件を判定していくべきです
- 前提条件としてコストが高い処理が含まれる場合に無理に行う必要は当然ありません
コストが高いものとはどういうものか?
伝えたいこと
- 不要なネットワーク接続やシステムコールを伴う処理はコストが高いです
- 一方でメモリにのったでーたの判定は非常に高速です
- 不要なコストを発生させないために低コストなものから判定していく様にしましょう