log > PHP 反省

PHP

とりあえず、昔の掲示板を今風にリファクタリングする作業はこの辺にしておくけど、反省するべきことがめちゃくちゃある。

まず、テストがない。テストファーストで作ると工程が2倍になる。600行程度だったため、仕様を書き起こしてあとからテストを書こうと思ったが、結局最後にテストを書くことになってしまった。

テストを最後に書くことは完全悪ではないのだが、テストを書くのが苦手なのでもう少し先にやっていれば習熟度が上がったのではないか、と思った。早めに書けば書き直しに時間を割けるため、もう少しましなテストが書けるようになったと思う。


次に、名前がおかしい。元のプログラムでも名前がおかしいな、と思う部分はあったが、自分のメソッドもおかしい箇所が多々あり、一見してもbooleanでどちらの値を返すのかわからないメソッドを作ってしまった。まあ、メソッドにcheckを使うとcheckDuplicatePostで重複したときとしないときのどちらでtrueが返るのか、あるいはエラーでthrowするのかがわからないのでダメだと思った。


それと、設計もよくなかった。オブジェクト指向で作るのなら、(一部とはいえ)元のプログラムをそのまま切り出してクラスにしたのはまずかった。オブジェクト指向ではなくて手続き型の関数をラップした感じになってしまった。

元の手続きが切り分けしづらい作りになっていた。具体的には、切り分けるとファイル読み込みが2回になる。その程度どうってことないのだろうけど、これがデータベースだったら、と思うと作り直す以外の直し方がよくわからないコードだった。


で、いろいろ反省したけど今のままではダメだと思うので、明日からTDD本ことレガシーコード改善ガイドを読んでいこうと思う。