[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

ハードコーディング

pointこの用語のポイント

point分けて書いた方が良い処理や値を、ソースコードの中に直接記述することだよ

point後で見たり変更したりするのが大変だから、嫌がられることが多いよ

スポンサーリンク

簡単に書くよ

ハードコーディングとは

別のところに分けておいた方が良いであろう処理や値をソースコードの中に直接埋め込むこと
です。

image piyo

詳しく書くよ

※このページの説明は「オンコーディング」の説明と同じです。既に「オンコーディング」の説明をご覧になった方は、読んでも意味が無いと思います。

ソースコードは「人間語で書いたプログラムの元ネタ」ね。
人間様は、ソースコードにあれやこれやの命令を書くことで、プログラムを作ります。

ハードコーディング

このソースコードの書き方には、特に決まりがあるわけではありません。
コンピュータさんが「あぁ、これは命令だな」と正しく認識できる形であれば、どう書いても良いのです。

ただし!

それは、趣味でプログラムを作っている人の場合です。
お仕事でプログラムを作る際には、いろいろなことを考慮する必要が出てきます。
例えば

・他の人が見ても分かりやすく
・後から変更するのが楽なように
・できるだけ同じような書き方で


などですね。
どこにどれだけこだわるかはお仕事現場次第ですが、後のことを考えないで「取り合えず動けば良い」で作ると、へぼプログラマ呼ばわりされることが多いです。

その「取りあえず動けば良い」の際たるもの、本来、別のところに分けて書いておいた方が良いであろう値や処理を、直接ソースコードの中にべた書きするのが「ハードコーディング」です。

例えば、そうですね。
以下のような処理があったとしましょう。

関数 金額計算(商品単価, 個数){
 消費税率 = 0.08

 金額 = 商品単価×個数 + 商品単価×個数×消費税率

 return 金額
}


商品単価と個数を渡すと税込の金額が返ってくる処理です。
この処理は、以下のように書くこともできます。

関数 金額計算(商品単価, 個数){

 金額 = 商品単価×個数 + 商品単価×個数×0.08

 return 金額
}


消費税率の「0.08」を直接処理の中に入れ込んじゃう形式です。

この2つの処理において、後者の「0.08」を直接処理の中に入れ込んじゃう形式をハードコーディングと言います。
例えば「消費税率をハードコーディングしてんのかよ!クソなコードだな!」と言ったりしますよ。

何故ハードコーディングがクソ扱いされることが多いかですが

・パッと見たときに分かりにくいから
・後から変更するのが大変だから


です。

今回の例ではたった数行の処理ですが、実際にはもっとたくさんの処理が書いてあるはずです。
そんな中、ひょっこり「0.08」という数字が出てきました。
「何じゃ?こりゃ」となりませんか。
「0.08」であれば、まだ「消費税かな?」と予想が付くかもしれませんが「1」とか「2」とかの数字が突然出てきたらどうでしょう。
きっと、その数字が何を意味するか探さなくてはいけないですよね。
ちょっと面倒くさいです。
これが「パッと見たときに分かりにくいから」の理由です。

次に「後から変更するのが大変だから」の理由です。
消費税率が変わって8%だったのが10%になりました。
ハードコーディングされていると、該当する場所をすべて変更しなくてはいけません。
今回の例では一回しか使っていませんが、実際には何回も出てくるはずです。
それを一から全部変更しなくてはいけません。
見落としがないように気を付ける必要があります。
ちょっと面倒くさいです。
これが「後から変更するのが大変だから」の理由です。

ちなみに、ソースコード内に直接記述した値は「マジックナンバー」と呼ばれます。
何の意味があるか分からないけど、取りあえず動くために必要な値だからでしょうかね。
マジックなナンバーなのです。
余裕があれば、併せて覚えてあげてください。

image piyo2

一言でまとめるよ

まぁ「ハードコーディング」って単語が出てきたら「外に出すべき処理や値をソースコードの中に直接埋め込むことなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク