【プログラミング】変数に複数の意味を持たせることのデメリット

雑学

更新月:2025/1
プログラミングにおける変数に複数の意味を持たせることのデメリットが分かる記事になります。

変数に複数の意味を持たせることのデメリット

プログラミングにおいて、変数に複数の意味を持たせることは、コードの理解を難しくし、バグの原因になることが多いため避けるべきです。特に初学者の段階では、変数を再利用することでコードが短くなるように思えるかもしれませんが、これには大きなリスクが伴います。

変数に複数の意味を持たせるとは?

例えば、ある変数が最初に「商品の価格」を意味していたのに、その後で「割引額」や「税金」を計算するために使われると、変数が意味を変えていきます。これにより、後からコードを見返したときに、その変数が何を表しているのかが分からなくなり、コードの可読性が低くなります。

例:変数に複数の意味を持たせる

# 商品の価格
price = 100  # 最初は商品の価格(100円)

# 割引を適用
price = price - 20  # 価格から割引を引く(割引後の価格)

# 消費税を加算
price = price * 1.08  # 割引後に消費税を加算(最終的な価格)

print(price)  # 最終的に消費税込みの価格が表示される

変数に複数の意味を持たせるデメリット

  • コードの可読性が低くなる: 変数が途中で意味を変えると、コードを読んだときにその変数が何を意味しているのかがすぐに分からなくなります。特に、後でコードを見直す際に、変数名が意味する内容を直感的に把握できないため、理解に時間がかかり、デバッグやメンテナンスが困難になります。
  • 意図しない値を使用するリスク: 変数の意味が変わることで、後続の処理で誤った値を使ってしまうことがあります。例えば、割引後の価格を求めるつもりが、税率が適用された後の値を使って計算してしまうなど、計算ミスや意図しない結果が生まれやすくなります。

「途中経過を最終結果変数に入れる行為」の危険性

類似した話になりますが、「途中経過を都度、最終結果が入る変数に入れる行為」も同様に要注意です。なぜなら、最終結果の変数に途中経過が混ざってしまうと、出力された値が本当に最終的な結果なのか、途中の計算の途中結果が混じっているのか判断ができなくなるからです。

問題点: 変数名から最終結果が読み取れない

例えば、最終的に「消費税込みの価格」を求めたかったとき、その過程で割引額を適用したり、税金を加算する途中経過の値を最終結果が入るべき変数に入れてしまうと、その変数名だけでは、最終結果を得たのか、それとも途中経過の値が残っているのか判断がつかなくなります。これにより、結果の信頼性が低くなり、デバッグやトラブル発生時に重要な情報を失ってしまうことになります。

例:途中経過を最終結果変数に入れる問題

# 処理途中の値を都度、最終結果の変数に入れてしまう例
total = 100  # 商品の価格

# 途中経過をそのままtotalに入れる
total = total - 20  # 割引後の価格

# 最終結果を入れるべき変数に途中経過を上書きしてしまう
total = total * 1.08  # 消費税を加算した価格(最終結果)

print(total)  # 消費税込みの価格が表示される

問題の本質: 変数名から最終結果の信頼性が判断できない

途中経過を最終結果変数に入れてしまうと、変数名からはその値が最終結果か途中経過かをすぐに判断できません。トラブルが発生したときに、出力された値が途中経過のものを含んでいるか、最終的に正しい結果が表示されているのか、出力結果の信頼性が大きく損なわれます

改善策:途中経過を別の変数に保存する

途中経過を最終結果の変数に混ぜ込まないようにするためには、途中経過を別の変数に保存する方法が有効です。これにより、最終結果の変数が正しい結果を表していることを保証でき、トラブル発生時にもどこで問題が起きたのかを追跡しやすくなります。

改善したコード

# 途中経過を別の変数に保存する方法
price = 100  # 商品の価格
discounted_price = price - 20  # 割引後の価格(途中経過)
final_price = discounted_price * 1.08  # 消費税を加算した最終価格

# 結果を別々に表示することで、途中経過と最終結果を確認できる
print("割引後の価格:", discounted_price)  # 割引後の価格を表示
print("最終価格:", final_price)  # 最終価格を表示

まとめ

  • 変数に複数の意味を持たせることのデメリット: 変数が途中で意味を変えると、コードが読みづらくなり、変数が何を意味しているのかを理解するのが難しくなります。バグを引き起こしやすく、後でコードを見直した際に意図しない動作を見逃す原因となります。
  • 途中経過を最終結果の変数に入れることの危険性: 最終結果に途中経過を入れると、変数名だけではその値が最終結果か途中経過か判断できず、出力された結果に信頼性を持てなくなります。トラブル発生時に必要な情報を失い、問題の発生源を追うことが難しくなります。
  • 改善策: 途中経過は別の変数に保存し、最終結果を確実に保持することで、コードの信頼性と可読性を向上させます。トラブル発生時に途中経過を確認できるため、問題解決がスムーズに進みます。

変数に意味を持たせる際にはその役割を明確にし、途中経過を最終結果と混同しないように気をつけましょう。

関連記事

外部リンク

生成AIメモ

  • 利用AI:ChatGPT 4o mini、一部利用
  • プロンプト1:プログラミングのソースコーディングにおける取り扱いにおいて、
    定義した変数に複数の意味を持たせることはデメリットが大きいと判断されると思います。
    この点について、初学者に分かるように説明して欲しいです。

    ・例に使うプログラムはPythonを採用してください。
    ・加えて、「処理途中の値を都度都度、最終結果が入る変数に入れる行為」の危険性についても説明してほしいです。
      「変数名から読み取れる本来知りたい値(=最終結果)であるか、すぐに判断出来ない、信用出来ない事が問題」ということが伝わる文章でお願いします。

  • プロンプト2:先程の内容をhtml形式(style使わず)で示してください

内容チェック済。