BLOG

【プログラマー研修 Java】もちおの記録1

こんにちは。
7月に入社した、もちおと申します。

このブログでは研修を通した学びや気づきを連携する場として活用していきたいと思います。

じゃんけんプログラムの勝敗判定におけるコーディング差異

同期と同じ処理のコーディングに差異がありました。

私のコーディングは後者なのですが、「工夫したけど実は処理が増えてました」
というのは本末転倒なので、全通り試行を行った際の関係演算子による比較回数の数で
それぞれを比較してみたいと思います。

判定をフル活用した記載(一般的な記述)

if (userHand == npcHand) {						
	System.out.println("引き分け");					
} else if (userHand == 1 && npcHand == 2 ||						
		userHand == 2 && npcHand == 3 ||				
		userHand == 3 && npcHand == 1) {				
	System.out.println("ユーザの勝ち");					
}else{						
	System.out.println("コンピュータの勝ち");					
}

一部数式を利用した記載(工夫した記述)

if (com_input == user_input){
	System.out.println("あいこです。");
}else if (com_input == ((user_input + 1) % 3)){
	System.out.println("ユーザーの勝ちです。");
}else if (com_input == ((user_input + 2) % 3)){
	System.out.println("コンピューターの勝ちです");
}else {
	System.out.println("error!");}

比較結果

じゃんけんの「グー/チョキ/パー」を「1/2/3」としています。

■関係演算子による比較回数
前者:30回(ORとANDを回数に含めず)
後者:12回(+数式計算9回)

今回の比較条件では後者の方が関係演算子による比較回数は少ないようです。
しかし比較の際に計算を行っているので、その分の処理が発生しています。
(処理時間は計測したらどちらも0msでした!笑)

コーディングのよしあしは目的別(拡張性や処理速度)で観点は変わりますが、
とりあえず今回は工夫したほうが効率良さそうです。

あとがき

無理やりまとめてしまいましたが、今回は以上になります。

今後はコーディングの際に大事にすべき観点を意識していきたいです。

BLOGトップへ戻る