Denominazione di classi, metodi, funzioni e variabili [duplicato]

82

Esistono 3 importanti convenzioni di denominazione:

  1. with_underscores
  2. PascalCased
  3. camelCased

Altre varianti non sono importanti perché non sono comunemente usate.

Per variabili sembra che quello con underscore sia il più usato dagli sviluppatori, quindi mi limiterò a farlo. Penso che sia lo stesso per le funzioni.

Ma per quanto riguarda la classe e i nomi dei metodi? Quale di questi 3 è il più utilizzato dagli sviluppatori per tali costrutti? (personalmente, è 3. per i metodi e 2. per le classi)

Per favore non pubblicare cose come "usa quello che ritieni giusto", perché il codice che sto scrivendo è API per altri sviluppatori, e mi piacerebbe adottare lo stile di codifica più popolare:)

    
posta Alexa 19.05.2012 - 16:35
fonte

5 risposte

193

Ho avuto la stessa domanda circa un anno fa quindi ho guardato un po 'di codice. Ecco cosa ho trovato (le costanti erano ALL_CAPS in ogni progetto, comunque):

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

Quindi, dopo aver visto tutto questo, ho deciso di andare con:

  • ClassName
  • methodName
  • propertyName
  • function_name (significato per funzioni globali)
  • $variable_name
risposta data 20.05.2012 - 00:25
fonte
22

Non esiste uno "stile di codifica più popolare", è strettamente legato alle convenzioni e alle preferenze personali della tua squadra. Dal momento che stai prendendo di mira gli sviluppatori, dovresti ricercare convenzioni popolari per la tua piattaforma e seguire quella che ritieni più comoda, leggibile e, più vicino al tuo stile personale. Per PHP un insieme popolare di convenzioni di denominazione è Zend Framework's .

Essere coerenti con la convenzione di denominazione scelta è più importante della convenzione stessa.

    
risposta data 19.05.2012 - 16:48
fonte
3

Anche se potrebbe non essere onnipresente come la versione Java, seguendo Apache PHP Style Guide sicuramente non farà male. Per le convenzioni di denominazione:

Naming: FunctionNamesLike, $localVariableName, $objectVariable, ClassNamesLike, MethodNamesLike, CONSTANTS_LIKE_THIS. Global names (classes, functions, variables, defines) must be prefixed to prevent naming clashes with PHP itself. This approach includes preventing prefixes that clash with PHP or are likely to. Apart from constants, prevent underscores in your names unless you simulate namespaces and are sure you can switch to real namespaces once PHP has them (and of course for object variables).

In seguito, i nomi di classi e metodi saranno PascalCased .

Ci sono anche una serie di altre guide di stile ragionevoli, come elencato qui . La maggior parte sembra concordare sul fatto che i nomi delle classi dovrebbero essere PascalCased , ma alcuni, inclusa la guida allo stile del MIT, indicano che i metodi dovrebbero essere camelCased .

Quindi, quattro anni dopo aver originariamente risposto a questa domanda, direi di andare con la risposta accettata sopra.

    
risposta data 19.05.2012 - 22:14
fonte
-2

Personalmente ritengo che Camelcase sia più naturale quando si codificano le variabili, ma poiché le variabili in PHP sono sensibili al maiuscolo / minuscolo e non è divertente cercare nel codice alla ricerca di una variabile che si è dimenticato di creare camelcase, io uso sempre il caso del serpente per le variabili.

Anche se è vero che le convenzioni sono mutabili, la codifica di qualcuno che ha usato Camelcase su variabili, e cercando di essere sicuro di usare sempre la loro convenzione per quella variabile, può essere frustrante.

    
risposta data 12.01.2015 - 02:06
fonte
-3

Abbiamo questo strano sistema in cui ogni cosa ha la sua convenzione:

  • ClassesAreLikeThis.
  • variablesAndFunctionsLikeThis
  • UNLESS_THEY_ARE_CONSTANTS
  • andMemberVariablesEndWith _
risposta data 20.05.2012 - 09:30
fonte

Leggi altre domande sui tag