LoginSignup
0
0

「破壊的代入を避ける」:よりクリーンなコードのためのリファクタリング戦略

Last updated at Posted at 2024-01-27

はじめに

プログラミングにおいて、変数を複数の用途で使い回すアンチパターンはよく見かけます。このアンチパターンを「破壊的代入」と呼びます。では、「破壊的代入」とは何か、そしてそれを避けるためにはどうすれば良いのでしょうか?

対象者

  • 駆け出しエンジニア
  • プログラミング初学者

用語の説明

破壊的代入

破壊的代入とは、同一の変数に複数の値を順次代入し、その変数の意味を時間の経過とともに変化させることを指します。これにより、コードの可読性が低下し、バグの原因となりやすくなります。

説明用の変数の導入

この問題を解決するための一つの手法が、「説明用の変数の導入」です。これは、異なる計算ステップや意味を持つデータごとに新しい変数を用意し、その変数名でコードの意図を明確に示す方法です。

結論

異なる目的ごとに専用のローカル変数を用意し、コードの意図を変数名で明確にすることが最善です。これにより、コードの可読性が向上し、将来のエラーを防ぐことができます。

具体的な利点

このアプローチには以下のような利点があります。

  • 可読性の向上: 各変数の役割が明確になり、コードが読みやすくなります。
  • バグの減少: 変数が一意の目的でのみ使用されるため、誤った使用によるバグが減少します。
  • 保守性の向上: コードの意図が明確になるため、将来的な変更やデバッグが容易になります。

実際のコード

アンチパターン

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();

それぞれの計算ステップごとに変数を用意しました。これにより、それぞれの計算の目的が明確になり、コードの理解が容易になります。

おわりに

破壊的代入を避けることは、プログラミングにおける重要なスキルの一つです。良いコードを書く開発者になりたい。

参考記事

現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0