web-dev-qa-db-ja.com

クラス、メソッド、関数、変数の命名

3つの重要な命名規則があります。

  1. with_underscores
  2. PascalCased
  3. camelCased

他のバリアントは一般的に使用されていないため、重要ではありません。

変数については、下線付きのものが開発者によって最も使用されているようですので、それを使います。関数についても同じだと思います。

しかし、クラスとメソッド名はどうですか?これらの3つのうち、開発者がそのような構造に最も使用しているのはどれですか(個人的には、メソッドの場合は3.、クラスの場合は2.です)

私が書いているコードは他の開発者向けのAPIであり、最も人気のあるコーディングスタイルを採用したいので、「正しいと思うものを使用してください」のようなものを投稿しないでください:)

92
Alexa

1年ほど前に同じ質問があったので、自分でいくつかのコードを調べました。これが私が見つけたものです(定数はALL_CAPSところで、すべてのプロジェクトで):

╔═══════════════════════╦═════════════╦════════════╦══════════════╦════════════╦════════════╗
║      PHP Project      ║   Classes   ║  Methods   ║  Properties  ║ Functions  ║ Variables  ║
╠═══════════════════════╬═════════════╬════════════╬══════════════╬════════════╬════════════╣
║ Akelos Framework      ║ PascalCase  ║ camelCase  ║ camelCase    ║ lower_case ║ lower_case ║
║ CakePHP Framework     ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ camelCase  ║
║ CodeIgniter Framework ║ Proper_Case ║ lower_case ║ lower_case   ║ lower_case ║ lower_case ║
║ Concrete5 CMS         ║ PascalCase  ║ camelCase  ║ camelCase    ║ lower_case ║ lower_case ║
║ Doctrine ORM          ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ camelCase  ║
║ Drupal CMS            ║ PascalCase  ║ camelCase  ║ camelCase    ║ lower_case ║ lower_case ║
║ Joomla CMS            ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ camelCase  ║
║ modx CMS              ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ lower_case ║
║ Pear Framework        ║ PascalCase  ║ camelCase  ║ camelCase    ║            ║            ║
║ Prado Framework       ║ PascalCase  ║ camelCase  ║ Pascal/camel ║            ║ lower_case ║
║ SimplePie RSS         ║ PascalCase  ║ lower_case ║ lower_case   ║ lower_case ║ lower_case ║
║ Symfony Framework     ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ camelCase  ║
║ WordPress CMS         ║             ║            ║              ║ lower_case ║ lower_case ║
║ Zend Framework        ║ PascalCase  ║ camelCase  ║ camelCase    ║ camelCase  ║ camelCase  ║
╚═══════════════════════╩═════════════╩════════════╩══════════════╩════════════╩════════════╝

したがって、これをすべて調べた後、私は次のようにすることにしました。

  • ClassName
  • methodName
  • propertyName
  • function_name(グローバル関数の意味)
  • $variable_name
208
programmer

「最も人気のあるコーディングスタイル」などはありません。厳密には、チームの慣習と個人的な好みの問題です。開発者をターゲットにしているので、プラットフォームの一般的な規則を調査し、より便利で読みやすく、個人のスタイルに近いと思われる規則に従う必要があります。 PHPの場合、一般的な命名規則のセットは Zend Framework's です。

選択した命名規則と一致することは、規則自体よりも重要です。

24
yannis

Javaバージョンのようにユビキタスではないかもしれませんが、Apache PHPスタイルガイド に従うことは確かに害にはなりません。命名規則の場合:

命名:FunctionNamesLike、$ localVariableName、$ objectVariable、ClassNamesLike、MethodNamesLike、CONSTANTS_LIKE_THIS。 PHP自体との名前の衝突を防ぐために、グローバル名(クラス、関数、変数、定義)にプレフィックスを付ける必要があります。このアプローチには、PHPまたは定数とは別に、名前空間をシミュレートする場合を除き、名前にアンダースコアを付けないようにし、PHPにそれらが含まれるようになると(もちろんオブジェクト変数の場合))、実際の名前空間に切り替えられることを確認してください。

この後、クラスとメソッドの名前はPascalCasedになります。

here にリストされているように、他にも多くの妥当なスタイルガイドがあります。ほとんどの人はクラス名がPascalCasedであることに同意しているようですが、MITスタイルガイドを含む)は、メソッドがcamelCasedであることを示しています。

だから、私が最初にこの質問に答えてから4年後、私は上記の受け入れられた答えで行くと言います。

3
Matthew Flynn

私たちはすべてが独自の慣習を持っているこの奇妙なシステムを持っています:

  • ClassesAreLikeThis。
  • variablesAndFunctionsLikeThis
  • UNLESS_THEY_ARE_CONSTANTS
  • andMemberVariablesEndWith_
0
Edward Strange

個人的には、変数をコーディングするときにキャメルケースの方が自然だと思いますが、PHPの変数は大文字と小文字が区別されるため、キャメルケースを作成するのを忘れた変数を探すコードを探すのは楽しいものではないため、常に使用します変数のヘビケース。

規約が変更可能であることは事実ですが、変数にキャメルケースを使用した人の後にコーディングし、その変数に対して常に規約を使用していることを確認しようとすると、イライラすることがあります。

0
Joomsavvy