Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | データの再編成 | シンボリック定数によるマジックナンバーの置き換え

内容

リファクタリング

シンボリック定数によるマジックナンバーの置き換え

適用ケース要約

意味のある数値が使用されている

適用内容要約

定数で数値を置き換える

適用詳細

意味のある数値がそのまま使用されている=マジックナンバー
マジックナンバーが存在する場合、実装者にしか分からないコードになりがちです。
数値自体の意味を判断出来るように、定数を作成して該当の数値を置き換えます。

サンプル

黄金比を算出する機能を実装します。

サンプルコード

リファクタリング

def calculate_golden_ratio(short)
  return short*1.618
end

base = 5
puts "黄金比 #{base}:#{calculate_golden_ratio base}"

base = 27
puts "黄金比 #{base}:#{calculate_golden_ratio base}"

リファクタリング

# encoding: Shift_JIS

GOLDEN_RATIO = 1.618
def calculate_golden_ratio(short)
  return short*GOLDEN_RATIO
end

base = 5
puts "黄金比 #{base}:#{calculate_golden_ratio base}"

base = 27
puts "黄金比 #{base}:#{calculate_golden_ratio base}"

出力(共通)

黄金比 5:8.09
黄金比 27:43.686