回答編集履歴

5

修正

2019/03/28 08:04

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -366,6 +366,8 @@
366
366
 
367
367
  ```
368
368
 
369
+
370
+
369
371
  3:
370
372
 
371
373
  ```php
@@ -394,6 +396,12 @@
394
396
 
395
397
  ```
396
398
 
399
+ 正常な場合のみにフォーカスを当てがちでですが、異常な方がプログラムとしては大事です。
400
+
401
+ 先に異常なほうを書きましょう。正常なほうは後回しでも問題ないです。
402
+
403
+
404
+
397
405
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
398
406
 
399
407
  「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。

4

修正

2019/03/28 08:04

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -300,7 +300,9 @@
300
300
 
301
301
  5.ifのスコープが長すぎる
302
302
 
303
- フォーマットかけたらよく分かると思います。特にelseのは致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
303
+ フォーマットかけたらよく分かると思います。特に短い方後に来るコードは読みづらいです。
304
+
305
+ 可読性が低く、それはメンテナンス性の低下も招きます。
304
306
 
305
307
  elseを使うにしても以下のどちらが読みやすいか考えてみてください。
306
308
 

3

修正

2019/03/28 08:02

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -395,3 +395,33 @@
395
395
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
396
396
 
397
397
  「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。
398
+
399
+
400
+
401
+ 6:PDOExceptionほぼ握りつぶしてる
402
+
403
+ ```php
404
+
405
+ } catch (PDOException $e) {
406
+
407
+ $errorMessage = header("Location: 500.php");
408
+
409
+ }
410
+
411
+ ```
412
+
413
+ 何のために例外捕捉するようにしたのか。これでは何か異常を検知したときに原因を調べられない。
414
+
415
+ セキュリティ観点から画面に出力する必要はないので、せめてログに出力してください。オブジェクトなので$eをjson_encode()かけたものでもいいから。
416
+
417
+ - [本当にあった怖い(Javaアンチパターンの)話:例外の抹殺](https://qiita.com/Shrimpman/items/56bfbfc44454e3096da5#no3-%E4%BE%8B%E5%A4%96%E3%81%AE%E6%8A%B9%E6%AE%BA)
418
+
419
+ - [「知らない」では怖い例外処理](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/)
420
+
421
+ - [
422
+
423
+ 例外処理について](https://donow.jp/skillup/?p=291)
424
+
425
+
426
+
427
+ ※Javaの記事ばかりですが考え方は同じ。握りつぶしちゃダメです。何のための例外をキャッチさせてるのか考えましょう。

2

修正

2019/03/28 07:52

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -302,6 +302,96 @@
302
302
 
303
303
  フォーマットかけたらよく分かると思います。特にelseが長いのは致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
304
304
 
305
+ elseを使うにしても以下のどちらが読みやすいか考えてみてください。
306
+
307
+ 1:
308
+
309
+ ```php
310
+
311
+ if($test){
312
+
313
+ /*
314
+
315
+
316
+
317
+ 長い処理
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+ */
328
+
329
+ }else{
330
+
331
+ echo 'error!';
332
+
333
+ }
334
+
335
+ ```
336
+
337
+ 2:
338
+
339
+ ```php
340
+
341
+ if(!$test){
342
+
343
+ echo 'error!';
344
+
345
+ }else{
346
+
347
+ /*
348
+
349
+
350
+
351
+ 長い処理
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+ */
362
+
363
+ }
364
+
365
+ ```
366
+
367
+ 3:
368
+
369
+ ```php
370
+
371
+ if(!$test){
372
+
373
+ die('error!'); //関数ならここでreturn
374
+
375
+ }
376
+
377
+ /*
378
+
379
+
380
+
381
+ 長い処理
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+ */
392
+
393
+ ```
394
+
305
395
  入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
306
396
 
307
397
  「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。

1

修正

2019/03/28 07:41

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -295,3 +295,13 @@
295
295
  パスワード何桁とかわざわざチェックするのは悪意あるユーザーのヒントになります。
296
296
 
297
297
  どっちも必須チェックくらいにとどめるべき。
298
+
299
+
300
+
301
+ 5.ifのスコープが長すぎる
302
+
303
+ フォーマットかけたらよく分かると思います。特にelseが長いのは致命的です。可読性が低く、それはメンテナンス性の低下も招きます。
304
+
305
+ 入力チェックの処理を外だしして関数呼び出してメインの処理はエラーメッセージの有無だけにしたほうがスッキリします。
306
+
307
+ 「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。