Convenții pentru denumirea variabilelor

Salut,

Am un proiect pe care lucrez cu alți doi programatori. Am folosit inițial formatul snake_case pentru denumirea variabilelor, însă în câteva commit-uri s-a folosit camelCase.
Folosesc pachetul PHP_CodeSniffer, însă nu am găsit nicio opțiune ca să impun și să pot să corectez automat formatul variabilelor.

Am două întrebări:

  1. Cum aș putea să impun și să corectez automat formatul variabilelor?
  2. Observ că framework-uri ca Zend și Symfony încurajează folosirea camelCase. De asemenea văd că PHP_CodeSniffer are câteva sniff-uri pentru camelCase și nu am găsit niciunul pentru snake_case.
    Voi ce preferați? Deoarece eu am lucrat cu CodeIgniter (iar acum Laravel) prefer snake_case. Mi se pare că este mai ușor de citit codul astfel.

Vezi daca te ajuta cu ceva. Nu e automat.

Depinde si cu cine lucrezi.

O astfel de conditie de formatare este grea ori pentru tine ori pentru el. Eu sunt de parere ca daca urmati amandoi macar psr-2 si formatarea e corecta, naming-ul nu ar fi o problema.

Daca folosesti PhpStorm este un plugin aici care poate face schimbarea din camelCase/PascalCase/snake_case in alt case.

Totusi daca te uiti aici o sa vezi ca nu prea e folosit snake_case deci colegul tau are mai multe argumente impotriva ta decat invers :smiley:

4 Likes

eu vad ca-i folosit majoritar pt variabile. doar ca se cheama lower_case, nu snake

Snake case in JS cel putin in ultimul timp e rezervat pentru constante locale sau constante globale cu litere mari, in lumea react-redux asa se declara actiunile, camelCase e folosit pentru variabile/functii si PascalCase e folosit pentru clase reutilizabile.

Cred ca are sens si in PHP.

In Golang e o conventie si mai interesanta :

In Golang, any variable (or a function) with an identifier starting with an upper-case letter (example, CamelCase) is made public (accessible) to all other packages in your program, whereas those starting with a lower-case letter (example, camelCase) is not accessible to any package except the one it is being declared in.

E o problema destul de complexa conversia automata dintr-un naming in altul fiindca trebuie parsat tot abstract syntax tree-ul ca sa se determine unde trebuie schimbate definitiile.