ハードコーディング

読み:ハードコーディング
外語:hard coding
品詞:名詞

プログラム中に定数などを直接記述すること。こうして書かれた値をマジックナンバーという。

後からの修正が困難(時に不可能)となるため、決してしてはならないとされる不文律の一つ。

ヘボプログラマほどハードコーディングをこよなく愛する傾向にあり、彼らが書いたプログラムは高確率でボログラムである。

修正困難

例えばCC++のプログラムで、バッファサイズをint buf[1024];のようにマジックナンバーで指定したプログラムがあったとする。

これを2048に変更したくなった時、この行だけ書き換えても恐らく正常に動かない。バッファ溢れを防ぐためのエラーチェックなどの部分も書き換えて初めてきちんと動作するが、それをどこでやっているのかはプログラム全体をチェックしないと分からない。一箇所でも書き換え忘れればバグになる。

修正容易

対し、#define BUFFERSIZE 1024; として int buf[BUFFERSIZE]; のようにすれば、define行の書きかえだけで全ての数値が書きかえられるので、これに伴うバグは発生しないはずである。

従って、このようなコーディングを心がけるべきと考えられている。

最近のものは未確認だが、Linuxのソースにも結構ハードコーディングされたマジックナンバーが存在するという噂がある。