眠る開発屋blog ある開発屋の雑感。日々勉強。

2008/2/3 日曜日

自由なプログラマ2

Filed under: IT世間話 — dev0000 @ 23:33:52

PHPで仕事をするときの注意

なるほどねぇ。

* コーディング規約を守る。組織にコーディング規約がないなら、Zend Framework PHP標準コーディング規約 を使う。オレ流コーディングスタイルは禁止。
* 内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。
* 開発環境の警告レベルをE_STRICTにする。本番環境ではdisplay_errorsをオフにする。
* register_globals、magic_quotesはオフにする。
* type hintingを積極的に使う。
* スコープの長い配列をクラスでラップする。
* プレゼンテーションとロジックを分割すること。プレゼンテーションには変数または関数の出力とループ以外のロジックを残さないこと。ロジックの中で直接出力をしないこと。ロジックはSimpleTestを使って単体テストすること。
* SQL文に変数を埋め込むときにはプレースホルダを使う(PDOのprepareとbindParams)。
* リクエストから取得したパラメータを出力するときはhtmlspecialcharsを使う。
* 関数が長くなったら分割する(composite methodパターンを使おう)。
* グローバル変数を使うのは避ける。
* 変数を定数として使わない。定数はdefineで定義するか、const宣言する。
* 常に最新バージョンでテストできる環境を作り、サービスイン後もバージョンアップに対応するための予算をとっておく(サービスイン後にお金をかけたくないなら、PHPは避けるべき)。
* 継承を使うなら、クラス図くらいは書いておく(単にコードを再利用したいだけなら、移譲を検討すること)。
* 各URLにおけるパラメータとその閾値を文書化すること。パラメータの閾値の境界線についてソースレビューし、テストすること。
* 既存のフレームワークを学習することに投資すること(学習コストを嫌って自己流のフレームワークを作ることは、バグを作りこむことになるのでかえってコスト高になる)。
* PHPしか使えない作業者の成果物はこまめにレビューすること。
* 設計を重視すること。
* コピー&ペーストプログラミングの匂いを発見したら、そのコードを書いた人にプログラミングの基礎を教えること。
* リファクタリングの時間をスケジュールに入れること。
* require/includeを条件文や関数宣言の中に記述しないこと。

PHPでも「やろうと思えば」それなりに厳密なプログラムができるという話ですね。
ただ、ある閾値以上の厳密性が要求されるのであれば、素直にJavaとか制約を厳しく行える言語を選んだほうがいいと思うけども。
Eclipseとか使うと型の推測機能とかリファクタリングとか充実しているので大分ラクチンだし、
それに動的型付け言語で厳密性を確保するのは割と手間暇がかかってくるよ。

ともあれ、ここの話とは対極的なものですね。

PHPコーディング規約だって

どちらにしろ実際には必要に応じた心構えになるのでしょうか。
正直なところ、こういうのって「非本質的なもの」にしか過ぎないと思うんだよね。
より安全なシステムを作る為の作法ではあるが、憲法ではない。

ドキュメントがどうとか開発プロセスがどうとかってのはクライアントの本質的要求ではない

ただ、個人的には、ここ最近はあまり大規模な開発案件に One Of Them なプログラマとして入ることってないし、そもそもこの先もそうする予定はあまりないし。

案件に恵まれている為か、まだ、やりたいようにやれていたりするので、それはそれで幸せかなぁ、とは思う。
「期日までにちゃんとやれればいいから」ぐらいしか言われないし。
だから、自分自身のやっていることって厳密性という点では結構緩い気がする。
「入力値と出力値に気を付ける」ぐらいかなぁ、あとムダなことはなるべくしない、とか。

ぺちぺ

私はそんな積極的に嫌いでもないけど、好きにもなれないなー。ただ、どうこうなって欲しいとか救われた方がいいとも思わない。ファンの人には悪いけど、このまま衰退していって欲しいとは思っている。ちゃんと衰退すれば日本Rubyの会の会長が昼間のほとんどの時間に書くコードが実はRubyじゃないなんてこともなくなると思うんだ。

PHPとかRubyではなくて、「何が自由か?」という問題な気もするけど。
それから営業の問題。

自由なプログラマ

Powered by WordPress