#はじめに
この業界で仕事をし始めてから日々聞きなれない単語を聞くことが多いのですが、今日は「ハードコーディング」という言葉を耳にして意味がわからなかったので、調べた結果をアウトプットさせていただきます。
#ハードコーディングとは
主にこちらの記事を参考にしました。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
記事にも書いてありますが、一言で言えば、「別のところに分けておいた方が良い処理や値をソースコードの中に直接埋め込むこと」です。
具体的なプログラムで見るとわかりやすいです。
price = gets
puts price + price * 0.1
上は物の値段を標準入力で受け取って、消費税率10%の税込価格を表示するごく簡単なRubyスクリプトです。
プログラムでは消費税率0.1が、税込価格を計算する箇所に直接書かれています。このスクリプトを書いた本人は税込価格を表示するプログラムだとわかっているため特に問題ありませんが、他の人が見たときに0.1って何?、みたいな感じでプログラムの意味が他人には把握しづらいです。
このように分けておいたほうがわかりやすい処理や値(今回は税率)を直接コードに書くことをハードコーディングと言います。
さらにハードコーディングされているのが数字の場合、それらは「マジックナンバー」と呼ばれます。
今回の税率0.1はマジックナンバーとなります。
複数人で開発する際にハードコーディングがあると、他の人がコードを見たときに処理がわかりづらいため、一般には避けるべき書き方です。
今回の税込価格プログラムのハードコーディングを解消すると、例として以下のようになります。
price = gets
tax = 0.1
puts price + price * tax
消費税をtaxとして分離することで、可読性が上がるとともに、将来消費税が変更になってもtax部分だけを変更すればいいので、修正も楽になります。
ハードコーディングとは逆に処理を分離する書き方は、ソフトコーディングと呼ばれるそうです。
今回は税込価格表示の簡単なプログラムだったためハードコーディング解消のありがたみがわかりづらいですが、巨大なプログラムになるとソフトコーディングによる恩恵は大きいと思われます。
具体的にはデータベース設定などはハードコーディングを避けるべき項目だと考えられます。