teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/01/31 07:10

投稿

kai0310
kai0310

スコア2076

answer CHANGED
@@ -64,4 +64,25 @@
64
64
  </form>
65
65
  </body>
66
66
  </html>
67
- ```
67
+ ```
68
+
69
+ ## 肝心の説明を記載していなかったので追記
70
+
71
+ > エラーはありませんが、下記のプログラム以外にシンプルなプログラムがあれば教えてください。
72
+
73
+ あなたの言うシンプルなプログラムってなんですか?まずそこを明確にしなけば自分自身がコードをシンプルにかけないと思いいますし、QAサイトの様に他人に伝えることもできません。
74
+ 今回の回答ではシンプルなプログラムを以下の様に定義づけました。
75
+
76
+ - コードを見ただけでも第三者が容易に理解できる
77
+ - デバッグしやすい
78
+ - 仕様変更しやすい
79
+
80
+ コードを見ただけでもわかると言うのは変数名であったり一連のロジックを関数化(オブジェクト思考)するなどが挙げられます。一連の処理でまとめることにより、処理によって役割を分担(単一責任)しているので、結果的にデバッグがしやすいです。
81
+ また、PHPDocは記載した方がわかりやすいとも言えると思います。
82
+ [参考: 初心者を戒めるPHP PHPDocは必ず書け - Qiita](https://qiita.com/tadsan/items/fb496e450fc27c8c4494#phpdoc%E3%81%AF%E5%BF%85%E3%81%9A%E6%9B%B8%E3%81%91)
83
+
84
+ 最後に仕様変更しやすいというのは今回の例ではじゃんけんの出す選択肢に`グー`ではなく、`ぐー✊ `などに変更したかったとします。そうすると、変更する必要があるのはどこかを質問者さんの最初のコードとこの回答のコードで見比べてみてください。また、定数で定義しているので保守性も上がると思います。
85
+
86
+ ~~ラジオボタンのvalueを変更しなければいいだけじゃない?と思われるかもしれませんが、valueも変更しなければならないケースを想定してください。。いい具体例が思いつかなかったのです。。~~
87
+
88
+ 質問者の元の回答ではHTMLのラジオボタンの表示を変えるだけではなく、勝敗の判定のロジックも変更する必要があります。ただ、この回答では`JANKEN`という配列のインデックスで管理しているため、配列の要素のみを変更するだけで勝敗の判定は変更する必要もありません。