log > PHP 問題になっているところ
PHP
あと関数2つ何とかすればリファクタリング部分はいいかな、というところまで来たのだが、そこが結構つらいというか、リファクタリングしづらいので困った。
問題になっているのは掲示板のログを記録する関数なのだが、上から
- メソッドがPOSTかどうかチェック
- 外部からの書き込みを弾く
- 書き込みのバリデーション
- 二重投稿のチェック
- ファイルを読み込んで一つ前の書き込みを取得
- 書き込み内容と名前の重複チェック
- 連続投稿(短い時間に投稿しないようにする)のチェック
- ホスト名の取得
- 削除キーの暗号化
- 文字をエンコード
- 改行文字の統一
- その後、行数チェック
- 文章の整形
- クッキーの保存
- ログの保存
- 最大保存数を超えたら過去ログへ移す
というコードになっている。
個人的には、セキュリティチェック→バリデーション→クッキーなど→ログ保存→過去ログ保存みたいな流れにしたいのだが、きれいな流れにするのが難しい。完璧にしようとしすぎなのか、それとも元の制御文がかっちりしすぎていて再構築しづらいのか。
エラーは最初に弾いて、それからModel系の処理をしよう、みたいな流れにしたいのだが、それをやるとファイル2回開いたりループが3回になったりするので、(ほぼ負荷は無視していいレベルの処理とはいえ)読みやすさ優先させて機能で劣るものを作るのって本末転倒なんじゃないかと思って進まなかった。
動作を変更せずにソースコードを整理するのがリファクタリングなので、使う人が無意識レベルで気にしないのであれば、処理は変えてもいいと思うのだが、なんか嫌だし、それやってるから先に進まないのだし、どうすればいいのか。
よくわからなかったので、レガシーコード改善ガイドを購入した。