■はじめに
この記事は、まだPHPの学習中の筆者が書いています。
学習中、問題を解いているだけでも、様々なエラーにぶつかります。
私と同じように学習している周りは普通にできることも、私はできないの?とか、私向いてないじゃないかと思った時に、私は、時間がかかっても、変数名をつけるようになりました。
その結果、"型が違いいます"とういエラーを激減させることができました。
同じような境遇の方たちに、ぜひ読んでほしいです。
■変数の命名規則について
コーディングは、後から修正するときに読みやすくするためのルールに則って行われます。
コーディング規約PSRの命名規則( https://www.infiniteloop.co.jp/docs/psr/psr-1-basic-coding-standard.php )には、次のものがあります。
・クラス名はパスカルケースで記述する。
・クラス定数名はコンスタントケースで記述する。
・関数名はキャメルケースで記述する。
一番よく使われる変数については規則を作っていないようです。
今回は、変数名についてです。
変数名は自由につけることができますが、分かりやすいコードを書くためにも、いくつか気を付ける点があるので、紹介します。
命名するときに気を付ける点は以下の通りです
変数の命名規則は4つある
1. 規則1:「$変数名」の形式で書く
変数名の先頭には「$」を付けます。
「なぜ?」「なんでつけるの?」
理由は『変数ですよ!』って一目でわかるようにするためです。
2. 規則2:1文字目は「文字」or「_」(※数はダメ!)
変数名の1文字目は「文字」or「アンダースコア(_)」でつけましょう。
数字や(_)以外の記号はNGです。
※アンダースコア(_)は英数字
3. 規則3:2文字目以降は、数値を使っていい!
2文字目以降は、数値を使うことができます。
先ほど言っていたのは、「名前の先頭に付けてはいけない」ということです。
4.規則4:「大文字」と「小文字」は区別される
PHPでは、大文字と小文字は区別されます。
例えば、「val」と「Val」は別物ということです。
ちなみにですが、「print」「sort」など、PHPにあらかじめ繰り込まれている関数は区別されません。
■きれいな変数名を付けるための『5つのこと』
No | 項目 | 良い | 悪い |
---|---|---|---|
1 | 人目で分かる | score, birth | m,n |
2 | 長すぎず短すぎず | password,name | pw,handle_name |
3 | ローマ字はNG | name,age | namae,nenrei |
4 | 紛らわしい見た目にしない | tel/Tel(大文字小文字の区別), user/user(1文字違い) |
長すぎず、短すぎず
むやみに省略するのはよくありません。
とはいえ、長すぎる変数名も良くありません。
■名前の記法ルール
記法 | 概要 | 例 |
---|---|---|
camelCase記法 | 先頭文字は小文字、その後、単語の区切りを大文字で表記 | $username |
Pascal記法 | 先頭文字も含め、すべて単語の頭文字を大文字で表記 | $UserName |
アンダースコア法 | 全ての文字は小文字/大文字で表し、単語の区切りは、アンダースコア(_)で表記(スネークケース記法ともいう | $user_name |
どれを使ってもいいですが、PHPの世界では以下のように使い分けがされています。
記法 | 用途 |
---|---|
camelCase記法 | 変数/関数 |
Pascal記法 | クラス |
アンダースコア法 | 定数 |
一つのポイントになるのが、変数は通常たくさん作られることです。
つまり、その分名前をたくさん考えないといけなし、タイピングも多くなります。
このことから、変数名にはタイピングしやすいパスカルケースやスネークケースが選ばれやすい傾向にあります。変数が全部大文字だとタイピングしにくいですよね。私自身、PHPの学習効率を上げるために、変数に名前を付けるようになりました。私は、PHPの学習中でキャメルケースを使っています。理由は単純で変数名の1文字目が小文字の方が、入力候補が出るまでを考えて効率がいいからです。それと、PHPであらかじめ繰り込まれている関数に、スネークケースを使用されているので、関数と識別しやすいと思ってキャメルケースを使っています
■まとめ
■最初に工夫したこと
その変数の型を表すstrやintなどを先頭の単語にして、キャメルケースにする場合もあります。例えば、strNameという変数を作ると、それがstring(文字列)型で名前を入れる変数であることの想像がつくと思います。型が分かるようにするのはエラーを防ぐのに有効です。型の間違いによる不具合を防げるからです。例えば、string(文字列)型にしか使えない関数、array(配列)型にしか使えない関数などが多数存在し、その度に起きていたエラーも減って、実際に学習の途中で、変数の中身がstring(文字列)型なのかarray(配列)型なのか、助けられました。
■最近変わった工夫の内容
今は、変数名を見て、どんな処理をするのか想定しやすいように、型を表すstrやintなど変数名を付けるという考え方をやめて、型名の代わりに〇〇の距離や〇〇の時間など、の名前をつけて、要素が複数入っている array(配列)型には、語尾に複数形の「s」を付けるようになりました。
結果、中身がstring(文字列)型なのかarray(配列)型なのかだけではなく、foreach文などで扱いやすくなりました、
■最近感じるようになったこと
PHPであらかじめ繰り込まれている関数に、スネークケースを使用されているので、関数と識別しやすいと思ってキャメルケースを使っていますが、これから先、webサイトなどを作成したりしていくに向けて、スネークケースの方がアンダーバーを入れるのか入れないのか、いちいち迷う必要がなく、とにかく単語の区切りにはアンダーバーを使うということが分かって、楽なのではないかと考えされることもあります。実際にWordPressなどは、全てスネークケースで記述されているようです。