Για λιγότερες φωνές στον κώδικα
Το coding style του Nette υφίσταται μια μικρή τροποποίηση: για τις σταθερές κλάσεων, χρησιμοποιείται πλέον η σημειογραφία PascalCase αντί της αρχικής SCREAMING_SNAKE_CASE.

Η παράδοση της χρήσης κεφαλαίων γραμμάτων για σταθερές προέρχεται από τη γλώσσα C, όπου έτσι σημειώνονταν οι λεγόμενες μακροσταθερές του προεπεξεργαστή. Ήταν χρήσιμο να διακρίνεται ευδιάκριτα ο κώδικας για τον parser από τον κώδικα για τον προεπεξεργαστή. Η PHP δεν χρειάζεται αυτή τη διάκριση καθώς δεν έχει προεπεξεργαστή. Αντίθετα, η υπερβολική έμφαση στις σταθερές είναι αντιπαραγωγική. Γιατί μια σταθερά θα έπρεπε να φωνάζει και να εφιστά την προσοχή στον εαυτό της, να είναι ένα προεξέχον στοιχείο στη ροή του προγράμματος; Δεν υπάρχει λόγος γι' αυτό.
Παράδειγμα πραγματικού κώδικα με SCREAMING_SNAKE_CASE σταθερές, οι οποίες προεξέχουν επιθετικά από τον κώδικα και επίσης διαβάζονται δυσκολότερα:
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;
}
}
Παράδειγμα του ίδιου κώδικα με PascalCase σταθερές, ο οποίος φαίνεται πολύ πιο συμπαγής:
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;
}
}
Συμβατότητα
Το Nette φυσικά φροντίζει για την προς τα
πίσω συμβατότητα. Όλες οι δημόσιες σταθερές
παραμένουν επίσης στην αρχική τους μορφή
και χρησιμεύουν ως ψευδώνυμα για τις
προτιμώμενες PascalCase σταθερές. Θα υπάρχουν
και στην επόμενη κύρια έκδοση και θα έχουν
τη σήμανση @deprecated
.
Όλες οι νέες σταθερές κλάσεων που προστίθενται είναι πλέον μόνο στην παραλλαγή PascalCase. Το Nette δεν χρησιμοποιεί καθολικές σταθερές.
Enumerations
Η PHP 8.1 φέρνει τους τύπους enum, οι οποίοι θα χρησιμοποιηθούν κάποτε και στο Nette. Παλαιότερα, τα enums προσομοιώνονταν με σταθερές. Η ίδια η τεκμηρίωση της PHP για τα “enum cases” χρησιμοποιεί τη σημειογραφία PascalCase, όπως και το PHP-FIG ή η παλαιότερη πειραματική υλοποίηση SplEnum.
Τα enums είναι ουσιαστικά συντακτική ζάχαρη για σταθερές, από την άποψη της PHP δεν υπάρχει καμία διαφορά μεταξύ ενός “enum case” και μιας σταθεράς κλάσης. Και γι' αυτό ο συνδυασμός PascalCase enums και SCREAMING_SNAKE_CASE σταθερών θα φαινόταν ασυνεπής, κάτι που αποτελεί έναν ακόμη λόγο για την αλλαγή του στυλ γραφής των σταθερών.
Πώς να αλλάξετε τον δικό σας κώδικα;
Κάθε καλλυντική αλλαγή προκαλεί πάντα
πολλή δυσαρέσκεια. Αλλά αν δοκιμάσετε να
χρησιμοποιήσετε τις PascalCase σταθερές για ένα
μήνα, θα ενθουσιαστείτε και δεν θα υπάρχει
επιστροφή. Και θα θέλετε να εισαγάγετε τη
νέα σημειογραφία και στον δικό σας κώδικα.
Πώς να το κάνετε; Ο ιδανικός τρόπος είναι να
μετονομάσετε τις σταθερές στο PhpStorm
χρησιμοποιώντας τη λειτουργία
Refactor > Rename
. Εγκαταστήστε επίσης το
plugin String
Manipulation και αναθέστε του στις ρυθμίσεις
μια συντόμευση πληκτρολογίου για το
Switch Case > To Pascal Case
.
Στη συνέχεια, θα αρκεί να τοποθετήσετε τον
κέρσορα στη σταθερά, να πατήσετε Ctrl-F6
(rename) και στη συνέχεια τη συντόμευση για το
To Pascal Case
και το PhpStorm θα αλλάξει τη
σταθερά σε ολόκληρο το έργο.
Happy coding!
Για να υποβάλετε ένα σχόλιο, συνδεθείτε