Por menos gritos no código
O estilo de codificação Nette está passando por uma pequena modificação: a notação PascalCase é agora usada para constantes de classe em vez da SCREAMING_SNAKE_CASE original.
A tradição de usar letras maiúsculas para constantes vem da linguagem C, onde as chamadas macro constantes de pré-processador eram denotadas como tal. Foi útil não ignorar a distinção entre código de parser e código de pré-processador. O PHP não precisa desta distinção, uma vez que não tem um pré-processador. Por outro lado, enfatizar em demasia as constantes é contraproducente. Por que uma constante deve gritar e chamar a atenção para si mesma, ser um elemento proeminente no fluxo do programa? Não há nenhuma razão para isso.
Exemplo de código real com constantes SCREAMING_SNAKE_CASE que se destacam agressivamente no código e também são mais difíceis de ler:
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;
}
}
Um exemplo do mesmo código com constantes de PascalCase, que parece muito mais compacto:
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;
}
}
Compatibilidade
A Nette é, naturalmente, cuidadosa com a retrocompatibilidade. Todas as
constantes públicas também permanecem em sua forma original e servem como
pseudônimos para as constantes preferidas do PascalCase. Elas continuarão a
existir no próximo grande lançamento e terão a bandeira
@deprecated
.
Todas as constantes de classe recém-adicionadas estão agora apenas na variante PascalCase. Constantes globais não são utilizadas pela Nette.
Enumerações
O PHP 8.1 vem com enumerações, que serão usadas também em Nette. As enumerações substituirão a solução anterior usando constantes. Ainda não há um padrão de codificação de como escrever enumerações, a organização PHP-FIG há muito falhou neste sentido e apresenta recomendações com muitos anos de atraso. A própria documentação do PHP é um guia. Para “enumerar casos”, ela usa exclusivamente a notação PascalCase, e isto também se aplica à implementação experimental anterior SplEnum.
Combinar enumerações de PascalCase com constantes de SCREAMING_SNAKE_CASE pareceria inconsistente, portanto, este é também um motivo para mudar o estilo de escrita das constantes.
Nota técnica: enumerações são açúcar sintáctico para constantes, do ponto de vista do PHP não há diferença entre “enumerar caso” e constante de classe.
Como mudar o próprio código?
Qualquer mudança cosmética sempre causará muito ressentimento. Mas se
você tentar usar constantes PascalCase durante um mês, você ficará encantado
com elas e não haverá volta atrás. E você também vai querer introduzir a
nova notação em seu próprio código. Como fazer isso? A maneira ideal é
renomear as constantes no PhpStorm usando a função
Refactor > Rename
. Além disso, instale o plugin String
Manipulation e atribua-lhe um atalho nas configurações para
Switch Case > To Pascal Case
.
Então tudo que você precisa fazer é colocar o cursor sobre a constante,
pressione Ctrl-F6
(renomear) e então o atalho para
To Pascal Case
e PhpStorm mudará a constante ao longo de todo
o projeto.
Feliz codificação!
Para enviar um comentário, faça o login