見やすいソースコードを書くコツの第2回目です。
今日は「ハードコーディング」を取り上げてみました
ハードコーディングという言葉をご存じですか?
プログラムの中に特定の値を直接書くコーディングのスタイルの事を
「ハードコーディング」と呼んでいます。
実は、ハードコーディングをするとコードが読みにくくなるだけではなく
将来管理するうえでも面倒になる事が大きくなります。
例えば、ある文字列に特定のキーワードがある行を見つけて処理するというプログラムを書く場合、プログラム中に直接その文字列、例えば「"ABC"」のような方法で書く場合です。
if (line.indexOf("ABC") !== -1) {
// 実際の処理
}
Javascriptの例ですが、良く使う例です。
これでも、使う場所が1か所だけとか、文字列を見れば意味が分かる場合は余り問題ではありません。
しかし、この文字列をいろいろな場所で使ったり、見ただけでは意味が分からない場合には問題になります。後でプログラムを見直す場合や、他人が見た時にはプログラムを書いた時の意図が分かりにくいからです。
例えば、この部分を定数
const KEYWORD_NAME_LINE = "ABC";
の様にすると、先ほどのプログラムは
if (line.indexOf(KEYWORD_NAME_LINE) !== (-1)) {
// 実際の処理
}
だと、この行は名前(=NAME)が含まれている行だとある程度推測できます。
また、複数の場所で同じ書き方がされている部分がある場合、
定数を宣言している部分1か所を修正すればプログラムの更新は簡単ですが
個別に書いている場合は全ての場所を修正する必要があります。
例えば、当初はキーワードが「ABC」だったのが、後から「ABCD」に変更する必要がある場合は結構あるものです。
別の例を挙げると、このようにキーワードが文字列の場合は推測できる場合も多いですが、例えば「男性=0」、「女性=1」と分類に数字を割り当てた場合、プログラムで直接「0」や「1」を使うと後で見ると何のことだかわからない場合があります。
if (type === 0) {
// 男性の場合の処理
} else if (type === 1) {
// 女性の場合の処理
} else {
// 男性でも女性でもない場合=>エラー処理
}
の様になりますが、
const MAN = 0;
const WOMAN = 1;
if (type === MAN) {
// 男性の場合の処理
} else if (type === WOMAN) {
// 女性の場合の処理
} else {
// 男性でも女性でもない場合=>エラー処理
}
とすると、プログラムの意味が分かり易くなります。
如何ですか?ちょっとした工夫ですがプログラムの見やすさは結構変わると思いませんか?
こうした事を最初にコーディングする時に意識できると、
プログラムの見やすさや管理のしやすさ(保守性)が格段に向上します。
ぜひ、コーディングの際には意識してみてください!