回答編集履歴
5
修正
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
修正
test
CHANGED
@@ -300,7 +300,9 @@
|
|
300
300
|
|
301
301
|
5.ifのスコープが長すぎる
|
302
302
|
|
303
|
-
フォーマットかけたらよく分かると思います。特に
|
303
|
+
フォーマットかけたらよく分かると思います。特に短い方が後に来るコードは読みづらいです。
|
304
|
+
|
305
|
+
可読性が低く、それはメンテナンス性の低下も招きます。
|
304
306
|
|
305
307
|
elseを使うにしても以下のどちらが読みやすいか考えてみてください。
|
306
308
|
|
3
修正
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
修正
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
修正
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
|
+
「本筋の処理と直接関係がないのなら外出し」「同じようなコードは変数で分岐かけて共通化」が基本です。
|