Kodda daha az çığlık atmak için
Nette kodlama stili küçük bir değişikliğe uğruyor: sınıf sabitleri için artık orijinal SCREAMING_SNAKE_CASE yerine PascalCase notasyonu kullanılıyor.
Sabitleri büyük harfle yazma geleneği, önişlemci makro sabitlerinin bu şekilde gösterildiği C dilinden gelmektedir. Ayrıştırıcı kodu ile önişlemci kodu arasındaki ayrımı gözden kaçırmamakta yarar vardı. PHP bir önişlemciye sahip olmadığı için bu ayrıma ihtiyaç duymaz. Öte yandan, sabitleri aşırı vurgulamak ters etki yaratır. Bir sabit neden bağırsın ve dikkatleri üzerine çeksin, program akışında öne çıkan bir unsur olsun? Bunun için hiçbir sebep yoktur.
Kodda agresif bir şekilde göze çarpan ve okunması daha zor olan SCREAMING_SNAKE_CASE sabitleri içeren gerçek kod örneği:
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;
}
}
Aynı kodun PascalCase sabitleri ile çok daha derli toplu görünen bir örneği:
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;
}
}
Uyumluluk
Nette elbette geriye dönük uyumluluk konusunda dikkatli davranmaktadır.
Tüm genel sabitler de orijinal formlarında kalır ve tercih edilen PascalCase
sabitleri için takma ad olarak hizmet eder. Bir sonraki ana sürümde var
olmaya devam edecekler ve @deprecated
bayrağına sahip
olacaklar.
Yeni eklenen tüm sınıf sabitleri artık yalnızca PascalCase varyantındadır. Global sabitler Nette tarafından kullanılmaz.
Numaralandırmalar
PHP 8.1, Nette'de de kullanılacak olan numaralandırmalar ile birlikte geliyor. Enumlar, sabitleri kullanan önceki çözümün yerini alacak. Henüz numaralandırmaların nasıl yazılacağına dair bir kodlama standardı yoktur, PHP-FIG organizasyonu bu konuda uzun süredir başarısızdır ve önerileri yıllar sonra ortaya çıkarmaktadır. PHP dokümantasyonunun kendisi bir rehberdir. “Enum durumları” için sadece PascalCase gösterimini kullanır ve bu daha önceki deneysel uygulama SplEnum için de geçerlidir.
PascalCase numaralandırmalarını SCREAMING_SNAKE_CASE sabitleri ile birleştirmek tutarsız görünecektir, bu nedenle bu aynı zamanda sabitlerin yazım tarzını değiştirmek için bir nedendir.
Teknik not: numaralandırmalar sabitler için sözdizimsel şekerdir, PHP bakış açısından “enum case” ile sınıf sabiti arasında bir fark yoktur.
Kendi kodunu nasıl değiştirebilirim?
Herhangi bir kozmetik değişiklik her zaman çok fazla kızgınlığa neden
olacaktır. Ancak PascalCase sabitlerini bir ay boyunca kullanmayı denerseniz,
onlardan heyecan duyacaksınız ve geri dönüşü olmayacak. Ve yeni gösterimi
kendi kodunuza da uygulamak isteyeceksiniz. Nasıl Yapılır? İdeal yol,
Refactor > Rename
işlevini kullanarak PhpStorm'daki sabitleri
yeniden adlandırmaktır. Ayrıca, String
Manipulation eklentisini yükleyin ve
Switch Case > To Pascal Case
için ayarlarda bir kısayol
atayın.
Daha sonra tek yapmanız gereken imleci sabitin üzerine getirmek,
Ctrl-F6
(yeniden adlandır) ve ardından
To Pascal Case
kısayoluna basmaktır ve PhpStorm proje boyunca
sabiti değiştirecektir.
Mutlu kodlamalar!
Yorum göndermek için lütfen giriş yapın