web-dev-qa-db-fra.com

Nommer des classes, des méthodes, des fonctions et des variables

Il existe 3 conventions de dénomination importantes:

  1. with_underscores
  2. PascalCased
  3. camelCased

Les autres variantes ne sont pas importantes car elles ne sont pas couramment utilisées.

Pour les variables, il semble que celui avec des traits de soulignement soit le plus utilisé par les développeurs, donc je m'en tiendrai à cela. Je pense que c'est la même chose pour les fonctions.

Mais qu'en est-il des noms de classe et de méthode? Lequel de ces 3 est le plus utilisé par les développeurs pour de telles constructions? (personnellement, c'est 3. pour les méthodes et 2. pour les classes)

S'il vous plaît ne postez pas des choses comme "utilisez ce que vous pensez être juste", car le code que j'écris est une API pour d'autres développeurs, et j'aimerais adopter le style de codage le plus populaire :)

92
Alexa

J'avais la même question il y a environ un an, j'ai donc regardé un code moi-même. Voici ce que j'ai trouvé (les constantes étaient ALL_CAPS dans chaque projet, soit dit en passant):

╔═══════════════════════╦═════════════╦════════════╦══════════════╦════════════╦════════════╗
║      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  ║
╚═══════════════════════╩═════════════╩════════════╩══════════════╩════════════╩════════════╝

Alors après avoir regardé tout cela, j'ai décidé de choisir:

  • ClassName
  • methodName
  • propertyName
  • function_name (destiné aux fonctions globales)
  • $variable_name
208
programmer

Le "style de codage le plus populaire" n'existe pas, c'est strictement une question de conventions et de préférences personnelles de votre équipe. Puisque vous ciblez les développeurs, vous devez rechercher les conventions populaires pour votre plate-forme et suivre celle qui vous semble plus pratique, lisible et, bien plus, plus proche de votre style personnel. Pour PHP un ensemble populaire de conventions de nommage est Zend Framework .

Être cohérent avec la convention de dénomination que vous choisissez est plus important que la convention elle-même.

24
yannis

Bien qu'il ne soit pas aussi omniprésent que la Java, suivre Apache PHP Style Guide ne fera certainement pas de mal. Pour les conventions de dénomination:

Dénomination: FunctionNamesLike, $ localVariableName, $ objectVariable, ClassNamesLike, MethodNamesLike, CONSTANTS_LIKE_THIS. Les noms globaux (classes, fonctions, variables, définitions) doivent être préfixés pour éviter les conflits de noms avec PHP lui-même. Cette approche inclut la prévention des préfixes qui se heurtent avec PHP ou En dehors des constantes, empêchez les soulignements dans vos noms, sauf si vous simulez des espaces de noms et êtes sûr que vous pouvez basculer vers de vrais espaces de noms une fois PHP les a (et bien sûr pour les variables d'objet).

Après cela, les noms de classe et de méthode seraient PascalCased.

Il existe également un certain nombre d'autres guides de style raisonnables, comme indiqué ici . La plupart semblent convenir que les noms de classe doivent être PascalCased mais certains, y compris le guide de style MIT, indiquent que les méthodes doivent être camelCased.

Donc, quatre ans après avoir répondu à l'origine à cette question, je dirais aller avec la réponse acceptée ci-dessus.

3
Matthew Flynn

Nous avons ce système bizarre où tout a sa propre convention:

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

Personnellement, je trouve que camelcase est plus naturel lors du codage des variables, mais parce que les variables en PHP sont sensibles à la casse, et ce n'est pas amusant de parcourir le code à la recherche d'une variable que vous avez oublié de faire camelcase, j'utilise toujours cas de serpent pour les variables.

Bien qu'il soit vrai que les conventions sont mutables, coder après quelqu'un qui a utilisé camelcase sur des variables, et essayer d'être sûr que vous utilisez toujours leur convention pour CETTE variable, peut être frustrant.

0
Joomsavvy