ホリデープログラミング入門

ホリデーにプログラミングを楽しむための入門 by 船木信宏

全体表示

[ リスト ]

変数名はどう付けよう?



PHPのプログラムを作っていく上で、変数や関数の名前は自分で決めていく必要がありますが、結構迷います。
まず、お手本になるものが2つあります。


2つとも「標準コーディング規約」の中のページに書かれています。PEARは当ブログで使ったCache_LiteがPEARの一部です。Zend Frameworkはまだ一般的ではありませんが、今後普及していく可能性がありますし参考になります。

2つを見比べてみると、ところどころ違うようです。命名の規則に絶対的な正解はありません。が、1つのプログラム中の命名には規則があった方が後から読み返したときに読みやすいです。

プログラマにとって3ヶ月前の自分は他人である

とよく言います。3ヶ月前に書いた自分のプログラムは他人が書いたかのように、何だかわからなくなるものです。なるべくそうならないように、規約に従うのが吉です。「美しく」書くことは難しくても「きれいに」書くことは誰にでも可能なはずです。

よく使う変数名


割と誰でもよく使う変数名というのもあります。

for ($i = 0; $i < 10; $i++) {
echo $i . "<br />";
}

例えばここで登場する$i。$i, $j辺りはよくforの中で使います。0から1ずつ増えるinteger(数)を表すことが多いです。x, y, zも数学で使うので数値にすることが多いと思います。

$fp = fopen('/tmp/textfile.txt', 'r');

ファイルを開いた結果はFile Pointerの略でfpを使うことが多いです。PHPのマニュアルでは$handleを使っています。あるいはFile Descripterの略で$fdを使うケースも多いようです。

$buf = file_get_contents('http://www.yahoo.co.jp/');

Bufferの略で$bufには文字列を入れることが多いと思います。

他にも、lenはlength、reqはrequestの略等々、何が一般的か一概には言えませんがいろいろあると思います。

PEARとZend Frameworkにみる命名規約


変数名と関数名は同じ命名規約になっています。

・変数名に含めることができるのは英数字のみ
・数字はお勧めしない
・常に小文字で開始する
・名前が複数の単語で構成されている場合は、各単語の最初の文字を大文字にする
・変数名は省略しすぎないようにする

4番目の規約は「camelCaps」と呼ばれるそうです。
$cacheIdとか$objCacheといった具合。

アンダースコアは僕の場合、結構使ってしまいますが、Zendの規約上はダメということになっています。$request_urlはダメ。(追記:コメントの指摘通りPEARの方は禁止していませんでした。変数名の頭にはZendの規約でも付ける場合があります。)

最後の省略しすぎない、は重要です。3ヶ月前の自分がどういう気持ちでその変数名をつけたのか、思い出せる程度にしないといけません。特に100行以上に渡って使われる変数はぱっと見わかる名前が無難です。あまり長すぎても疲れますが。

ローマ字にするか英語にするか


個人的にはローマ字は使いません。$hankakuとか英語にしづらいときはローマ字にしますが。

ハンガリアン命名規約


PHPでは標準的ではありませんが、ハンガリアン命名規約も時には便利です。MicrosoftのVC++などで使われています。
例えば、

$nSize = count($array);
$strFileName = 'test.txt';
$bRes = true;
$arrProducts = array(1, 3, 91);

と変数名の最初に変数の中身がどんなものかを表す文字をつけます。nは数、strは文字列、bはbool(true/false)、arrはarray(配列)です。


まとめと次回


繰り返しになりますが、3ヶ月前の自分は他人です。プログラムの見た目を「きれいに」書いておくのがいかに大切かは、3ヶ月前の他人のプログラムを見てちんぷんかんぷんな変数名に頭を抱えてから気付くのかもしれません。

さて次回は、、PEARを少し掘り下げてみますか。

この記事に

閉じる コメント(6)

顔アイコン

いきなりですが傑作打たせて頂きます。 じぶんでソースかいた物でコメントも書いてあるにもかかわらず変数が多いと迷路にはまりますよね。

2007/4/9(月) 午前 3:32 [ やるきねこ ] 返信する

顔アイコン

コメントありがとうございますー。 エディタの検索/補完機能とかでもカバーしていかないと大変ですね。

2007/4/9(月) 午後 7:39 [ funaki ] 返信する

顔アイコン

camel capsという言い方もあることを初めて知りましたが、camel caseという言い方の方がもう少し一般的かと思います。 おれは「略称を極力使わない」というのを最近心がけてます。 かわもと

2007/4/9(月) 午後 9:59 [ ka1*ru ] 返信する

顔アイコン

camel caseとも言うんですね。PEARやZendではcapsでした。

2007/4/14(土) 午前 9:41 [ funaki ] 返信する

顔アイコン

PEAR標準コーディング規約にも、変数名にアンダースコアの使用を不可とする記述がありましたっけ?
自分の場合、JavaScriptでハイフンがマイナスとして解釈されて不具合を招いてしまった経験があり、それ以来変数名も定数名もCSSの識別子にもアンダースコアを使いまくりです。 削除

2007/10/18(木) 午前 11:43 [ nise_inu ] 返信する

顔アイコン

ぁ、確かにダメとは書いてありませんね。
PEARには。PEARの既存のコード中にもアンダースコアはちょくちょく使われていました。

ありがとうございます。訂正しておきます。

2007/10/19(金) 午後 10:53 [ funaki ] 返信する

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

開く トラックバック(1)


.


みんなの更新記事