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

回答編集履歴

5

修正

2019/03/28 08:04

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -182,6 +182,7 @@
182
182
  */
183
183
  }
184
184
  ```
185
+
185
186
  3:
186
187
  ```php
187
188
  if(!$test){
@@ -196,6 +197,9 @@
196
197
 
197
198
  */
198
199
  ```
200
+ 正常な場合のみにフォーカスを当てがちでですが、異常な方がプログラムとしては大事です。
201
+ 先に異常なほうを書きましょう。正常なほうは後回しでも問題ないです。
202
+
199
203
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
200
204
  「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。
201
205
 

4

修正

2019/03/28 08:04

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -149,7 +149,8 @@
149
149
  どっちも必須チェックくらいにとどめるべき。
150
150
 
151
151
  5.ifのスコープが長すぎる
152
- フォーマットかけたらよく分かると思います。特にelseが長致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
152
+ フォーマットかけたらよく分かると思います。特に方が後に来るコード読みづらいです。
153
+ 可読性が低く、それはメンテナンス性の低下も招きます。
153
154
  elseを使うにしても以下のどちらが読みやすいか考えてみてください。
154
155
  1:
155
156
  ```php

3

修正

2019/03/28 08:02

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -196,4 +196,19 @@
196
196
  */
197
197
  ```
198
198
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
199
- 「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。
199
+ 「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。
200
+
201
+ 6:PDOExceptionほぼ握りつぶしてる
202
+ ```php
203
+ } catch (PDOException $e) {
204
+ $errorMessage = header("Location: 500.php");
205
+ }
206
+ ```
207
+ 何のために例外捕捉するようにしたのか。これでは何か異常を検知したときに原因を調べられない。
208
+ セキュリティ観点から画面に出力する必要はないので、せめてログに出力してください。オブジェクトなので$eをjson_encode()かけたものでもいいから。
209
+ - [本当にあった怖い(Javaアンチパターンの)話:例外の抹殺](https://qiita.com/Shrimpman/items/56bfbfc44454e3096da5#no3-%E4%BE%8B%E5%A4%96%E3%81%AE%E6%8A%B9%E6%AE%BA)
210
+ - [「知らない」では怖い例外処理](https://www.techscore.com/blog/2016/12/23/%E3%80%8C%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84%E3%80%8D%E3%81%A7%E3%81%AF%E6%80%96%E3%81%84%E4%BE%8B%E5%A4%96%E5%87%A6%E7%90%86/)
211
+ - [
212
+ 例外処理について](https://donow.jp/skillup/?p=291)
213
+
214
+ ※Javaの記事ばかりですが考え方は同じ。握りつぶしちゃダメです。何のための例外をキャッチさせてるのか考えましょう。

2

修正

2019/03/28 07:52

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -150,5 +150,50 @@
150
150
 
151
151
  5.ifのスコープが長すぎる
152
152
  フォーマットかけたらよく分かると思います。特にelseが長いのは致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
153
+ elseを使うにしても以下のどちらが読みやすいか考えてみてください。
154
+ 1:
155
+ ```php
156
+ if($test){
157
+ /*
158
+
159
+ 長い処理
160
+
161
+
162
+
163
+
164
+ */
165
+ }else{
166
+ echo 'error!';
167
+ }
168
+ ```
169
+ 2:
170
+ ```php
171
+ if(!$test){
172
+ echo 'error!';
173
+ }else{
174
+ /*
175
+
176
+ 長い処理
177
+
178
+
179
+
180
+
181
+ */
182
+ }
183
+ ```
184
+ 3:
185
+ ```php
186
+ if(!$test){
187
+ die('error!'); //関数ならここでreturn
188
+ }
189
+ /*
190
+
191
+ 長い処理
192
+
193
+
194
+
195
+
196
+ */
197
+ ```
153
198
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
154
199
  「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。

1

修正

2019/03/28 07:41

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -146,4 +146,9 @@
146
146
 
147
147
  4.というかこれはログイン画面ですよね。
148
148
  パスワード何桁とかわざわざチェックするのは悪意あるユーザーのヒントになります。
149
- どっちも必須チェックくらいにとどめるべき。
149
+ どっちも必須チェックくらいにとどめるべき。
150
+
151
+ 5.ifのスコープが長すぎる
152
+ フォーマットかけたらよく分かると思います。特にelseが長いのは致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
153
+ 入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
154
+ 「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。