【要約】ハードコーディングは本当に悪なのか [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者がコード内に値を直接記述すると、システムの保守性と安全性が低下する。具体的には、以下の問題に直面する。
- ・マジックナンバーによる意図の不明瞭化。
if (score >= 80) のように、数値の意味がコードから読み取れない。- ・環境依存値の混入によるリスク。
- ・変更時の影響範囲の特定困難。
// Approach
筆者は、定数化の目的を「値に意味を与えること」と定義し、以下の手法を提案している。
- 同じ値を複数箇所で利用するか。
- 業務上の意味を明示する必要があるか。
- ドメインごとに
- ・定数化の判断基準の適用。
- 同じ値を複数箇所で利用するか。
- 業務上の意味を明示する必要があるか。
- ・適切な定数の配置戦略。
constants.ts を避け、利用箇所に近い場所に配置する。- ドメインごとに
constants.ts を分離し、依存関係を整理する。- ・局所的なリテラルの許容。
expect(response.status).toBe(201); のように、文脈から意味が自明な場合は直接記述する。// Result
適切な判断基準を導入することで、開発チームは以下の成果を得られる。
- ・コードの可読性と意図の明確化。
const PASSING_SCORE = 80; のように、業務ルールがコードに反映される。- ・保守コストの低減。
- ・開発体験の最適化。
Senior Engineer Insight
> 定数化の本質は「値の再利用」ではなく「意図の明示」である。現場では、過度な定数化がコードの追跡を困難にする「インダイレクションの罠」を招く。HTTPステータスコードのように、文脈から意味が自明なものはリテラルのまま扱う勇気も必要だ。保守性と可読性のトレードオフを、ドメインの境界に基づき判断すべきである。大規模システムでは、定数の配置場所が依存関係の複雑さを左右することを忘れてはならない。