Pentru mai puține țipete în cod
Stilul de codare Nette suferă o modificare minoră: pentru constantele de clasă se folosește acum notația PascalCase în locul originalului SCREAMING_SNAKE_CASE.
Tradiția utilizării majusculelor pentru constante provine din limbajul C, unde așa-numitele constante macro de preprocesor erau notate ca atare. Era util să nu se treacă cu vederea distincția dintre codul parser și codul preprocesorului. PHP nu are nevoie de această distincție, deoarece nu are un preprocesor. Pe de altă parte, accentuarea exagerată a constantelor este contraproductivă. De ce ar trebui ca o constantă să strige și să atragă atenția asupra sa, să fie un element proeminent în fluxul programului? Nu există niciun motiv pentru aceasta.
Exemplu de cod real cu constante SCREAMING_SNAKE_CASE care ies agresiv în evidență în 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;
}
}
Un exemplu al aceluiași cod cu constante PascalCase, care arată 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 este, bineînțeles, atent la compatibilitatea retroactivă. Toate
constantele publice rămân, de asemenea, în forma lor originală și servesc
ca pseudonime pentru constantele PascalCase preferate. Acestea vor continua să
existe și în următoarea versiune majoră și vor avea indicatorul
@deprecated
.
Toate constantele de clasă nou adăugate sunt acum doar în varianta PascalCase. Constantele globale nu sunt utilizate de Nette.
Enumerări
PHP 8.1 vine cu enumerări, care vor fi utilizate și în Nette. Enumerațiile vor înlocui soluția anterioară care folosea constante. Nu există încă un standard de codare pentru modul de scriere a enumerărilor, organizația PHP-FIG a eșuat de mult timp în această privință și vine cu recomandări cu mulți ani întârziere. Documentația PHP însăși este un ghid. Pentru “enum cases”, aceasta folosește exclusiv notația PascalCase, iar acest lucru este valabil și pentru implementarea experimentală anterioară SplEnum.
Combinarea enumerațiilor PascalCase cu constantele SCREAMING_SNAKE_CASE ar părea incoerentă, deci acesta este, de asemenea, un motiv pentru a schimba stilul de scriere a constantelor.
Nota tehnică: enumerările sunt zahăr sintactic pentru constante, din punctul de vedere al PHP nu există nicio diferență între “enum case” și constanta de clasă.
Cum se modifică codul propriu?
Orice schimbare cosmetică va provoca întotdeauna multe resentimente. Dar
dacă încercați să folosiți constantele PascalCase timp de o lună, veți
fi încântați de ele și nu veți mai putea da înapoi. Și veți dori să
introduceți noua notație și în propriul cod. Cum să faceți acest lucru?
Modul ideal este să redenumiți constantele în PhpStorm folosind funcția
Refactor > Rename
. De asemenea, instalați pluginul String
Manipulation și atribuiți-i o scurtătură în setările pentru
Switch Case > To Pascal Case
.
Apoi, tot ce trebuie să faceți este să plasați cursorul pe constantă,
să apăsați Ctrl-F6
(redenumire) și apoi comanda rapidă pentru
To Pascal Case
și PhpStorm va schimba constanta în tot
proiectul.
Codare fericită!
Pentru a trimite un comentariu, vă rugăm să vă conectați