MySQL4.xとPHP4.xを使用しています。
チームで開発する時、
ソースの可読性をあげるために、
変数名は、単語の切れ目で大文字と小文字で・・・
というルールが暗黙で決まっていると思います。
× $red_line
○ $redLine
しかしながら、MySQLのフィールド名は大文字小文字を区別しないので
× `redLine`
○ `red_line`
みたいなことになっています。
MySQLは、大文字分かってくれないから仕方ない
というのも暗黙っぽいですね。
さて、可読性と世界中のルールを考えると、
× $red_line
○ $redLine
の方が良い感じもしますが、
PHPからMySQLのデータとのやりとり時に、
変数名のコピペ失敗して、
typoしちゃうこともあるので、
いっそのこと、PHPもMySQLも
× `redLine`
○ `red_line`
ってしちゃった方がバグが少ないかなと思ったりするのですが、
皆様のご意見をお聞かせください。
ちょっとそれは厳しすぎるのでは?ライトウェイトなスクリプトとしては、事前コンパイルを前提としないし。予期せぬパターンで出現するバグをより含みやすくすると思うのだが。
確かに最近は世間的には、大文字小文字の組み合わせが多いと思います。
私の場合は、
http://www.sra.co.jp/wingnut/standards-j_toc.html
「GNUコーディング規約」の中のこれ
http://www.sra.co.jp/wingnut/standards/standards-ja_5.html#SEC26
「変数、関数、ファイルの名前付け」を参考にしてました。
最近は
http://shugo.net/ruby-codeconv/codeconv.html
「Rubyコーディング規約」の命名規則も少し気にしてます。
どちらも変数名、メソッド名(関数名)については
・小文字使用
・区切りは'_'(アンダーバー)
という点は共通です。
Rubyコーディング規約についてはクラス名だけは区切りを使わず、大文字小文字の組み合わせです。
確かにこれだとクラス名とメソッド名、属性名の区別がつきやすいのでわかりやすそうです。
おお!!
ありがとうございます。
GNUコーディング規約やRubyコーディング規約では、
アンダーバーで区切るのですね。
知りませんでした。
>ってしちゃった方がバグが少ないかなと思ったりするのですが、
名前の付け方とバグとはあまり関係ないと思います。
DBのネーミングルールとプログラム言語のネーミングルールが
違うことも良くあります。
redLineで統一しても良いのではないですか?
フィールド名は大文字小文字を同一視するだけで、大文字小文字のまま
のはずです。
http://youkey.spaces.live.com/Blog/cns!DF5ABB2B86ACBDDB!230.entry
red_lineでもよいと思いますよ。
昔のPerlとかCとかこのスタイルですしね。
多数決で決めても良いぐらいの問題のように私は思います。
あ、すみません。
バグっていうか、typoが多くなって、エラーが起きるというか。。。
例えば、DBからred_lineを引っ張ってきて、
$red_Line = $dbResult['red_line'];
(略)
print $redLine;
な感じにしちゃってどこがエラーかみつけにくいことが出ちゃうんです。
> red_lineでもよいと思いますよ。
なるほど、スタイルは自分で築いていけばいいかもしれませんね。
個人で開発するツール類であれば、コーディング規約はいろいろあるので個人的になじみやすいものでいいと思います。私の場合は以前redLineでしたが、今はRubyを好んで使っているのでred_lineです。
チームで開発する場合はばらばらだと面倒なんで、PHPであれば標準規約でredLineだと思うのでそちらにあわせたほうが良いような気がします。私もid:watch00さんのおっしゃられるように多数決で決めても良い問題のような気がします。まー多数決となると結局言語の標準規約を多く採用している人が多いと思いますので、個人的には標準規約になるべくあわせるようにと思っています。
http://phpspot.net/php/man/pear/standards.html?t=phps
http://framework.zend.com/manual/ja/coding-standard.html
あと私も良くやっちゃうんですが、コピペはしないほうがバグは減りますね。後は適切にクラス設計して冗長なコードを排除できるように学習中です。
もう少し分かりやすく書いていただけると幸いです。