コードSOD:コピーのコピーのコピー ノート

コードSOD:コピーのコピーのコピー

ジェシカは、時代遅れのAPIを使用しているレガシーなWindows Formsアプリケーションに取り組んでいました。彼女はパフォーマンスの悪いレポートの調査を任されました。コードベースは、多くの非効率性を伴うスパゲッティコードとして記述されています。ジェシカは、SQLクエリを実行するGetReportDiscountsというメソッドを発見しましたが、皮肉なことに、SQLに既に存在する集計をC#で実行していました。このメソッドは、独自のDateパラメータを無視し、フィルタリングにマジックナンバーを使用していました。別のメソッドであるGetReportTotalsはほぼ同一ですが、異なるマジックナンバーを使用しています。これらのメソッドは両方とも、Dateパラメータを正しく利用する以前のメソッドGetCancelledInvoicesから派生しています。しかし、GetCancelledInvoicesも、データベースクエリではなくC#でフィルタリングを実行していました。ジェシカは、実際の問題のレポートがこれらのメソッドのバリエーションであり、データ操作のためにクライアントサイドの処理に依存していることを発見しました。このレポートを適切なインデックスを持つSQLストアドプロシージャにリファクタリングしたところ、パフォーマンスは大幅に向上しました。この記事は、コードのコピー&ペーストや、アプリケーションレイヤー内での非効率的なデータベース操作といった一般的な問題を強調しています。