プロジェクト名に愛が無い
そしてリポジトリ名がncrm(多分New CRMの略)。だったら更に新しいの出たら何になるのか。nncrmか?nnncrm、n5crmとかschemeの仕様みたいになっていくのかと小一時間(略
テストが無い
テストぉ?そんなお上品なもんなんざぁ、とんとお目にかかったことねーなぁ?
バリデーションが無い
バリデーション?そんなお上品なもんなんざぁ(略
サーバーがrootログインの許可+IP制限している
セキュリティを高めたいのか低めたいのかどっちなのか。使い辛いわ。
バージョン管理システムがよくわかってない
なぜトップにぶち撒けられてる?trunkはどこ?branchesとtagsはなぜ空?
メソッドが大文字から始まる
あんた絶対Windows畑から来たね?同じ調子でPHP書かれても困るんだヨォ。
全テーブルに共通のプレフィックスが付いている
いや、データベース名があるからわかるよ。
テーブル名に型が付いている
はいはい、mはマスターでtはトランザクションね。データベース版ハンガリアン記法。
テーブル名が日本語
逆に分かり辛い。
テーブル名が日本語の複数形
「フレームワークの規約で複・・・」シャラップ!!みなまで言うな!!
テーブル名がその全部だ
もう何が何やら・・・
レガシー改善仲間募集
「これはひどい」といっても実際にはそこら中にいっぱいありますよね、こういうプロジェクト。ひとしきり毒づいたあとは一つづつ地道に改善していけばいいんです!
僕が現在関わっているプロジェクトではこういったレガシーPHPを改善してださるPHPプログラマー仲間を募集しております。くわしくはコチラ
ほんとたすけてくだしあ・・・
ヘタしたら、テストサーバすらない場合もあるんだぜ。
#PHPに限らないものも含む
・バージョン管理がない
・バージョン管理の使い方が分かってない
・PHP5系で動かない
・文字比較と数値比較の違いが分かってない。
・タイプジャグリングでヌルポインター例外で落ちる
・ライブラリが超マイナーでとっくに開発終了
・ライブラリがPHP4系でしか動かない
・標準関数があるものでも自作関数で処理する。しかもクソ遅くてバグあり。
・もちろん、それはPHP5系では動かない
・なんでもかんでも正規表現で処理しようとする。もちろん上手くいかなくてバグが残る。
・しかもereg系(だっけ?)でゴリ書き。仕様はおろかコメントもないので移植は絶望的な状況。
他にもイロイロあったよ。ほんとうに噂に違わぬ糞言語っぷりだったよ。PHPは。
I18Nを「nternatonalzaton」と書く「たぬきのたからばこ」みたいなのかと思ったら違った。
そのほか、
・省略しすぎて分かりづらい変数名や関数名
・エラーはすべてfalseで返却し、エラー毎の処理が出来ない。例外処理?なにそれおいしいの?
・クラスファイルかと思いきやすべてpublicな静的メソッドのみで構成されているファイルが複数あり、ただの疑似名前空間として以外機能しない関数の一覧が多数。
・入力値、戻り値が明確に定義されていない。また入力値チェックもしていないため、想定外の値が渡ってもそのまま処理されていく。
なんてものがあったりして、よくもまぁ動いてるなぁという環境を現在見ていて唖然としています。
というパターンもありますね・・・。はぁ・・・。
・インデックスがほとんど使われてない。
・NOT NULL制約がほとんどない。
・デフォルト値がほとんどない。
・各項目の用途がほとんど不明。
・「DB定義書」と称するものはあるが、内容はテーブルの項目を一言ずつ説明しているだけ。取り得る値と意味についてさえ、ろくに説明されてない。
・一応インデックスは張ってあるけど、肝心の行で関数などが使われているために実際にはインデックスは使われず、シーケンシャルにしか検索できない
・SQL中であるにも関わらず、なんでも正規表現で処理する
・しかもバグ有り。
・文字列比較とDateの比較の違いが分かってない。日付の比較を徹頭徹尾文字列で処理しようとする。
・PHPとSQL間の型変換をなにも考えてない。そして比較で失敗する。
・巨大なSQL文も、ヒアドキュメントでなくPHPの文字列結合で書く。
・しかも、もちろんインデントは狂ってる。
・そして当然のように死ぬほど遅い。おそらく本来のDBMSの速度の数百~数万分の一以下のオーダー。
・もちろん作った人間はとっくに辞めていて、その会社にはいない。
etc
でもPHPプロジェクトだとこんなの氷山の一角で、よくあることだよね。
>・入力値、戻り値が明確に定義されていない。また入力値チェックもしていないため、想定外の値が渡ってもそのまま処理されていく。
うあ……。あったあった。orz
入力値チェックがないのはもちろん、「入力値の型」という概念さえ理解していないようだった。型に対する理解がいい加減だったから、渡される引数の型さえ正しいかどうか不明という。
上司は
「PHPでは型は自動変換されるので問題ないでしょ?」
とか寝言をほざいてくれるし。んなわけないじゃん。