Kodda Daha Az Bağırma

3 yıl önce Yazan David Grudl  

Nette kodlama stili küçük bir düzenlemeden geçiyor: sınıf sabitleri için artık orijinal SCREAMING_SNAKE_CASE yerine PascalCase gösterimi kullanılıyor.

Sabitler için büyük harf kullanma geleneği, C dilinden gelir; burada bu şekilde önişlemci makro sabitleri işaretlenirdi. Ayrıştırıcı için olan kodu önişlemci için olan koddan gözden kaçırılamayacak şekilde ayırmak faydalıydı. PHP'nin bu ayrıma ihtiyacı yoktur çünkü önişlemcisi yoktur. Aksine, sabitlerin aşırı vurgulanması ters etki yapar. Neden bir sabit bağırmalı ve kendine dikkat çekmeli, program akışında göze çarpan bir öğe olmalı? Bunun için bir neden yok.

Koddan agresif bir şekilde öne çıkan ve okunması da zor olan SCREAMING_SNAKE_CASE sabitleriyle 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;
	}
}

Çok daha kompakt görünen PascalCase sabitleriyle aynı kod ö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 uyumluluğa dikkat eder. Tüm genel sabitler orijinal biçimlerinde de kalmaya devam eder ve tercih edilen PascalCase sabitleri için takma ad olarak hizmet eder. Gelecek ana sürümde de var olacaklar ve @deprecated bayrağına sahip olacaklar.

Yeni eklenen tüm sınıf sabitleri artık yalnızca PascalCase varyantındadır. Nette global sabitler kullanmaz.

Enumerations

PHP 8.1, Nette'de de bir gün kullanılacak olan enum tipleri getiriyor. Eskiden enum'lar sabitler kullanılarak taklit edilirdi. PHP belgelerinin kendisi enum durumları için PascalCase gösterimini kullanır, aynı şekilde PHP-FIG veya önceki deneysel uygulama SplEnum.

Enum'lar aslında sabitler için sözdizimsel şekerdir, PHP açısından “enum durumu” ile sınıf sabiti arasında hiçbir fark yoktur. Ve bu nedenle PascalCase enum'ları ile SCREAMING_SNAKE_CASE sabitlerini birleştirmek tutarsız görünürdü, bu da sabit yazım stilini değiştirmenin başka bir nedenidir.

Kendi kodunuzu nasıl değiştirirsiniz?

Her kozmetik değişiklik her zaman çok fazla hoşnutsuzluğa neden olur. Ancak PascalCase sabitlerini bir ay boyunca kullanmayı denerseniz, onlardan memnun kalacaksınız ve geri dönüş olmayacak. Ve yeni gösterimi kendi kodunuza da getirmek isteyeceksiniz. Bunu nasıl yapmalı? İdeal yol, PhpStorm'daki Refactor > Rename fonksiyonunu kullanarak sabitleri yeniden adlandırmaktır. Ayrıca String Manipulation eklentisini kurun ve ayarlarda Switch Case > To Pascal Case için bir klavye kısayolu atayın.

O zaman imleci sabitin üzerine getirmek, Ctrl-F6 (yeniden adlandır) tuşuna basmak ve ardından To Pascal Case kısayoluna basmak yeterli olacaktır ve PhpStorm sabiti tüm projede değiştirecektir.

Mutlu kodlamalar!