はじめに
プログラミングにおいて、変数を複数の用途で使い回すアンチパターンはよく見かけます。このアンチパターンを「破壊的代入」と呼びます。では、「破壊的代入」とは何か、そしてそれを避けるためにはどうすれば良いのでしょうか?
対象者
- 駆け出しエンジニア
- プログラミング初学者
用語の説明
破壊的代入
破壊的代入とは、同一の変数に複数の値を順次代入し、その変数の意味を時間の経過とともに変化させることを指します。これにより、コードの可読性が低下し、バグの原因となりやすくなります。
説明用の変数の導入
この問題を解決するための一つの手法が、「説明用の変数の導入」です。これは、異なる計算ステップや意味を持つデータごとに新しい変数を用意し、その変数名でコードの意図を明確に示す方法です。
結論
異なる目的ごとに専用のローカル変数を用意し、コードの意図を変数名で明確にすることが最善です。これにより、コードの可読性が向上し、将来のエラーを防ぐことができます。
具体的な利点
このアプローチには以下のような利点があります。
- 可読性の向上: 各変数の役割が明確になり、コードが読みやすくなります。
- バグの減少: 変数が一意の目的でのみ使用されるため、誤った使用によるバグが減少します。
- 保守性の向上: コードの意図が明確になるため、将来的な変更やデバッグが容易になります。
実際のコード
アンチパターン
example.js
let price = quantity * unitPrice;
if (price < 3000) {
price += 500; // 送料
}
price = price * taxRate();
priceを下記3つの用途で使い回しています
- 数量 × 単価の計算
- 送料を加算した結果
- 加算した結果に税率を適用した値
リファクタリング
example.js
const basePrice = quantity * unitPrice;
let shippingCost = 0;
if (basePrice < 3000) {
shippingCost = 500; // 送料
}
const totalPrice = (basePrice + shippingCost) * taxRate();
それぞれの計算ステップごとに変数を用意しました。これにより、それぞれの計算の目的が明確になり、コードの理解が容易になります。
おわりに
破壊的代入を避けることは、プログラミングにおける重要なスキルの一つです。良いコードを書く開発者になりたい。