糞ソース作者へのお願い
2010/06/02
仕事で、別のところの人が作ったシステムに手を入れることは多いんだけど、酷いソースは本当に酷い。加えて仕様が酷い場合は相乗効果で、もう手をつけられない状態になる。修正する人が病気になるくらい破壊力がある。
良くないソースの特徴と対策(糞ソース作者へのお願い)を書いてみた。
複数ある検索条件などフォームから受け取って、個々の条件毎別々にセッションスコープに保存している
- 検索条件は、連想配列とかクラスのインスタンスに入れて(纏めた上で)セッションスコープに入れるようにして欲しい。
- セッションスコープはある意味、グローバルスコープになってしまうんだから、なるべく減らすべき。
ifで条件分岐しているけど、if節とelse節でやってることがほとんど同じ
- 同じ部分は、ifの外に出して欲しい。おんなじ事書いてて変だと思わないのか。
メソッド名が変
- 外から見て、何をするメソッドかがわかるようにして欲しい。
変数名が変
- 何を表すデータが格納されるのか意味を考えて欲しい。PHPはただでさえスコープ広いんだから、適当な変数名は混乱の元になる。
- コーディングしてて、変数の意味が変わったら、変数名も変えるようにして欲しい。
クラスのインスタンスメソッドの引数が異様に多い。
- コンストラクタの引数で受けとってインスタンスに状態持たせればインスタンスメソッドの引数は、減る場合がある。
似たメソッド名のメソッドが大量に定義されている。中身は汎用化させずにコピペしてある。
- メソッドの実装を一箇所にまとめる。メソッドを増やすことが必要なのか、再検討して欲しい。
やたらとif文が多い。頭で考えたこと全部if文で実装するな。
- もっと、適切な条件で処理を行なえば、if文が減らせるかどうか検討して欲しい。
こうやって、挙げてみると、難易度が高い話は全く出てこなくて、初心者にありがちな「一番最初に思いついた解決方法で実装しちゃう」というのが、全ての元凶のように思えてくる。「もっと良い解決方法が無いか」というステップを踏まない人が、初心者のまま糞ソースを量産しづつけるのだろう。
糞ソースが亡くなりますように。