Mai puțin țipăt în cod
Stilul de codare Nette trece printr-o mică modificare: pentru constantele de clasă se utilizează acum notația PascalCase în locul celei originale SCREAMING_SNAKE_CASE.

Tradiția utilizării literelor mari pentru constante provine din limbajul C, unde astfel se marcau așa-numitele macroconstante ale preprocesorului. Era util să se distingă în mod vizibil codul pentru parser de codul pentru preprocesor. PHP nu are nevoie de această distincție, deoarece nu are preprocesor. Dimpotrivă, evidențierea excesivă a constantelor este contraproductivă. De ce ar trebui o constantă să țipe și să atragă atenția asupra ei, să fie un element proeminent în fluxul programului? Nu există niciun motiv pentru asta.
Exemplu de cod real cu constante SCREAMING_SNAKE_CASE, care ies agresiv în evidență din cod și sunt, de asemenea, mai greu de citit:
foreach (self::SYMBOL_TO_NAME as $symbol => $name) {
$idx = self::ACTION_BASE[$state] + $symbol;
if (($idx >= 0 && $idx < count(self::ACTION) && self::ACTION_CHECK[$idx] === $symbol
|| $state < self::YY_2_TBLSTATE
&& ($idx = self::ACTION_BASE[$state + self::NUM_NON_LEAF_STATES] + $symbol) >= 0
&& $idx < count(self::ACTION) && self::ACTION_CHECK[$idx] === $symbol)
&& self::ACTION[$idx] !== self::UNEXPECTED_TOKEN_RULE
&& self::ACTION[$idx] !== self::DEFAULT_ACTION
&& $symbol === 0
) {
return true;
}
}
Exemplu al aceluiași cod cu constante PascalCase, care pare mult mai compact:
foreach (self::SymbolToName as $symbol => $name) {
$idx = self::ActionBase[$state] + $symbol;
if (($idx >= 0 && $idx < count(self::Action) && self::ActionCheck[$idx] === $symbol
|| $state < self::Yy2Tblstate
&& ($idx = self::ActionBase[$state + self::NumNonLeafStates] + $symbol) >= 0
&& $idx < count(self::Action) && self::ActionCheck[$idx] === $symbol)
&& self::Action[$idx] !== self::UnexpectedTokenRule
&& self::Action[$idx] !== self::DefaultAction
&& $symbol === 0
) {
return true;
}
}
Compatibilitate
Nette, desigur, acordă atenție compatibilității inverse. Toate
constantele publice rămân în continuare și în forma originală și servesc
ca aliasuri pentru constantele PascalCase preferate. Vor exista și în
următoarea versiune majoră și vor avea flag-ul @deprecated
.
Toate constantele de clasă nou adăugate sunt deja doar în varianta PascalCase. Nette nu utilizează constante globale.
Enumerări
PHP 8.1 aduce tipuri enumerare, care vor fi utilizate odată și în Nette. Anterior, enum-urile erau imitate folosind constante. Documentația PHP însăși pentru “enum cases”:“enum cases” utilizează notația PascalCase, la fel și PHP-FIG sau implementarea experimentală anterioară SplEnum.
Enumerările sunt, în esență, zahăr sintactic pentru constante, din punctul de vedere al PHP nu există nicio diferență între „enum case” și o constantă de clasă. Și, prin urmare, combinarea enum-urilor PascalCase și a constantelor SCREAMING_SNAKE_CASE ar părea inconsistentă, ceea ce este un alt motiv pentru schimbarea stilului de scriere a constantelor.
Cum să schimbați propriul cod?
Fiecare modificare cosmetică provoacă întotdeauna multă nemulțumire. Dar
dacă încercați să utilizați constantele PascalCase timp de o lună, veți
fi încântați de ele și nu va mai exista cale de întoarcere. Și veți dori
să introduceți noua notație și în propriul cod. Cum să faceți asta? Calea
ideală este să redenumiți constantele în PhpStorm folosind funcția
Refactor > Rename
. Instalați și pluginul String
Manipulation și alocați-i în setări o scurtătură de tastatură
pentru Switch Case > To Pascal Case
.
Apoi va fi suficient să plasați cursorul pe constantă, să apăsați
Ctrl-F6
(rename) și apoi scurtătura pentru
To Pascal Case
, iar PhpStorm va schimba constanta în întregul
proiect.
Codare fericită!
Pentru a trimite un comentariu, vă rugăm să vă conectați