プログラム歴10年以上のプログラマが教える見やすいソースコードの書き方とは!?
giving株式会社の杉山大介です。
最近ITスクールの講師業もやっているのですが、教えるにあたり見やすいソースコードを最初から意識するの大事だなと感じました。
そこで、プログラマ歴10年の経験から積み上げたノウハウを紹介します。
じゃんけんプログラムを例にしながら説明します。(PHPでやってみました。)
1、要件を日本語でコメントに書く
じゃんけんプログラムを作ってみようと最初にやることは、要件を洗い出すことです。
<?php
//プレイヤーのじゃんけんの手を取得する
//コンピューターの手を決める
//じゃんけんの結果を判定する
//結果を表示する
?>
2、変数名、関数名をわかりやすくする
1で書いたコメントに合わせて関数を作ります。コメントがなくても関数名を見るだけ何をする関数なのかがわかるのがベストです。
また、変数も型と何が入っているものかがわかるように書きましょう。
// フォームからプレイヤーの手を取得する
$iPlayerHand = getPlayHandfromBrowser();
// コンピュータの手を取得する
$iCpuHand = getCpuHand();
// じゃんけんの結果を判断する
$iResultRPS = getResultRPC($iPlayerHand, $iCpuHand);
// ブラウザに判定結果を表示する
$chrMessages = showResultRPSonBrowser($iResultRPS);
3、関数のコメントに機能、引数、戻り値を記載する
//----------------------------------------------
//関数名:getCpuHand
//機能 :コンピュータの手を取得する(ランダム)
//引数 :なし
//戻り値:グー、チョキ、パーいずれかを返す
//----------------------------------------------
function getCpuHand()
{
$iCpuHand = rand(STONE,3);
return $iCpuHand;
}
4、インデントをそろえる
//----------------------------------------------
//関数名:getResultRPC
//機能 :じゃんけんの勝負結果を判定する
//引数 :$iPlayerHand, $iCpuHand
//戻り値:勝ち、負け、あいこを返す
//----------------------------------------------
function getResultRPC($iPlayerHand, $iCpuHand)
{
if($iPlayerHand == $iCpuHand)
{
$iResultRPS = DRAW;
}
else if(($iPlayerHand == STONE && $iCpuHand == SCISSORS) ||
($iPlayerHand == SCISSORS && $iCpuHand == PAPER) ||
($iPlayerHand == PAPER && $iCpuHand == STONE))
{
$iResultRPS = WIN;
}
else if(($iPlayerHand == STONE && $iCpuHand == PAPER) ||
($iPlayerHand == SCISSORS && $iCpuHand == STONE) ||
($iPlayerHand == PAPER && $iCpuHand == SCISSORS))
{
$iResultRPS = LOSE;
}
else
{
$iResultRPS = ERROR;
}
return $iResultRPS;
}
プログラムは最初は取っ付きにくいところがありますが、答えがひとつでなかったり、きれいなソースコードが書けるようになると本当におもしろいです。ぜひプログラムを始めて見たい人もすでにやっていてレベルアップしたい人もやってみてください。