プログラミングにおいて「マジックナンバー」とは、コード内に意味を持たずに直接書かれた数値のことを指します。これらの数値は、コードを理解しにくくし、メンテナンスを難しくする原因となります。この教材では、マジックナンバーを排除する方法を学び、リーダブルなコードを書くための実践を行います。
マジックナンバーは、特定の意味や目的を持たずに、直接コードに埋め込まれた数値です。例えば、以下のようなコードがあります。
def calculate_area(radius):
return 3.14 * radius * radius
このコードでは、3.14
がマジックナンバーです。この数値が円周率であることは知っている人も多いですが、他の人には意味が伝わりません。
マジックナンバーを排除するには、意味のある定数を定義し、その定数を使用するようにします。以下のサンプルコードを通じて、どのようにマジックナンバーを排除できるかを見ていきましょう。
まず、マジックナンバーを含む基本的な円の面積を計算する関数を見てみましょう。
def calculate_circle_area(radius):
return 3.14 * radius * radius
このコードを修正して、マジックナンバーを排除します。まず、円周率を定数として定義します。
PI = 3.14 # 円周率
def calculate_circle_area(radius):
return PI * radius * radius
このように、PI
という名前の定数を作成することで、マジックナンバーを排除しました。これにより、コードの可読性が向上しました。
次に、円の面積を計算するプログラムに、複数の円の面積を計算する機能を追加してみます。ここでも、マジックナンバーを排除する良い例を見てみましょう。
def calculate_circle_area(radius):
PI = 3.14 # 円周率
return PI * radius * radius
def calculate_total_area(radii):
total_area = 0
for radius in radii:
total_area += calculate_circle_area(radius)
return total_area
radii_list = [1, 2, 3, 4]
total_area = calculate_total_area(radii_list)
print("Total area:", total_area)
このコードでは、円の半径のリストを受け取り、それぞれの円の面積を計算して合計を返す関数calculate_total_area
を定義しています。
さらなる改善として、円周率を定数として外部に配置して、全体で使えるようにします。
PI = 3.14 # 円周率
def calculate_circle_area(radius):
return PI * radius * radius
def calculate_total_area(radii):
total_area = 0
for radius in radii:
total_area += calculate_circle_area(radius)
return total_area
radii_list = [1, 2, 3, 4]
total_area = calculate_total_area(radii_list)
print("Total area:", total_area)
このように、PI
を関数の外に定義することで、他の関数からも円周率を利用できるようになりました。
マジックナンバーを排除することは、コードの可読性とメンテナンス性を向上させるために非常に重要です。意味のある名前を持つ定数を使用することで、コードの理解が容易になり、エラーを防ぐことができます。次回のコーディングでは、マジックナンバーが存在しないかを確認し、リーダブルなコードを目指しましょう。