În această serie, ne vom arunca adânc în WordPress Coding Standards - în special în standardele de codare PHP - pentru a evangheliza și a înțelege cum trebuie scris codul WordPress de calitate.
În ciuda faptului că acest lucru este documentat în WordPress Developer Handbook, cred că este ceva de spus pentru a înțelege rațiunea din spatele De ce unele lucruri sunt așa cum sunt acestea.
Amintiți-vă: Scopul nostru final este să vă asigurați că scriem coduri care respectă standardele de codificare, astfel încât, împreună cu alți dezvoltatori, să putem citi, înțelege și menține mai ușor codul pentru teme, pluginuri și aplicații construite pe partea de sus a WordPress.
În acest post, vom examina modul în care se pot descurca convențiile de numire și argumentele funcției.
Înainte de a cheltui orice moment în elaborarea punctelor prezentate în standardele de codificare, este important să înțelegeți rolul pe care îl joacă convențiile de numire în scrierea codului, indiferent de ce platformă lucrați.
În cele din urmă, convențiile de numire - indiferent dacă sunt pentru clase, funcții, variabile, atribute sau argumente - ar trebui să contribuie la explicarea scopului pe care îl servesc.
Prin aceasta, vreau să spun că numele de clasă ar trebui să fie, de obicei, substantive, funcțiile ar trebui să fie de obicei verbe, iar variabilele, atributele și argumentele ar trebui să explice scopul pe care îl servesc în contextul clasei sau funcției în care urmează să fie definite. Este vorba doar de a face codul cât mai ușor de citit.
La fel cum standardele de codare afirmă:
Nu abreviați numele variabilelor neapărat; lăsați codul să fie neechivoc și autocumentant.
Aceasta este o regulă bună fără deosebire din ce parte a codului pe care lucrați.
Când vine vorba de a lucra cu WordPress, nu este posibil să întâlniți clase dacă nu faceți unul dintre cele două lucruri:
Dacă pur și simplu lucrați la tema respectivă, sunteți mult mai probabil să lucrați cu un set de funcții - vom vorbi despre aceștia momentan.
Dar pentru cei care lucrează cu pluginuri sau cu propriile lor biblioteci, este important să ne amintim că clasele ar trebui să fie de obicei substantive - ar trebui să reprezinte scopul pe care îl încapsulează și ar trebui să facă într-un mod un lucru și să o facă bine.
De exemplu, dacă aveți o clasă chemată Local_File_Operations
atunci poate fi responsabil pentru citirea și scrierea fișierelor. Nu ar trebui să fie responsabil pentru citirea și scrierea fișierelor, precum și, de exemplu, pentru preluarea fișierelor la distanță.
Conform standardelor de codificare WordPress, clasele trebuie să respecte următoarele convenții:
Simplu, corect?
Practic vorbind, aceasta ar arata astfel:
class_File_Operations
clasa Remote_File_Operations
clasa HTTP_Request
clasa SQL_Manager
Pentru a reitera: clasele ar trebui să fie, de asemenea, substantive și ar trebui să descrie scopul unic pe care îl servesc.
Așa cum am menționat mai devreme, dacă clasele sunt substantive care, în mod ideal, reprezintă o singură idee sau un singur scop, atunci metodele lor ar trebui să fie acțiunile pe care le pot lua. Ca atare, ele ar trebui să fie verbe - ar trebui să indice ce acțiuni vor fi luate ori de câte ori sunt chemați.
În plus, argumentele pe care le acceptă ar trebui să contribuie și la denumirea funcției. De exemplu, dacă o funcție este responsabilă pentru deschiderea unui fișier, parametrul său ar trebui să fie un nume de fișier. Din moment ce obiectivul nostru ar trebui să facă cât mai ușor citirea codului, atunci ar trebui să citească ceva de genul "a avea managerul de fișiere local să citească fișierul având următorul nume de fișier".
În cod, acest lucru poate arăta cam așa:
// Clasa de clasa de definitie Local_File_Manager functie publica open_file ($ filename) // Function implementation // Cum folosim acest cod $ file_manager = new Local_File_Manager (); $ fișier_manager-> open_file ('foo.txt');
Desigur, acest lucru nu acoperă încă Cum funcțiile trebuie să fie scrise în contextul dezvoltării WordPress. Standardele de codare prevăd:
Utilizați litere mici în nume variabil, acțiune și funcție (niciodată
CamelCase
). Separați cuvintele prin subliniere. Nu abreviați numele variabilelor neapărat; lăsați codul să fie neechivoc și autocumentant.
Prima parte a convenției este destul de ușor de înțeles; cu toate acestea, cred că dezvoltatorii au o înclinație de a lua comenzi rapide atunci când sunt capabili. "Ah," ne gândim "$ str
are sens aici, și număr $
aveți sens aici. "
Desigur, există întotdeauna mai rău - unii dezvoltatori recurg la folosirea unor caractere unice pentru denumirile lor variabile (care este, în general, acceptabilă numai în cadrul buclelor).
La fel cum standardele de codare afirmă: Nu abreviați numele variabilelor ne-necesar. Codul să fie unic și documentar.
Acum, adevărul este că codul nu poate fi decât clar la un punct. La urma urmei, de asta se numește cod, nu? Acesta este motivul pentru care cred că comentariile codului ar trebui să fie utilizate liber.
Oricum, linia de jos se referă la însoțirea numelor de metode, evitarea întregii carcase de cămilă, separată prin spațiere și a fi cât mai concret posibil atunci când numiți variabilele.
Numele de variabile nu sunt, de fapt, mult diferite de alte nume de funcții decât cele care reprezintă o singură valoare sau o referință la un anumit obiect. Convențiile de numire încă urmează ce vă așteptați:
O altă convenție pe care o utilizează unii dezvoltatori este ceea ce se numește notație maghiară, unde se află tipul valorii stocate de variabile în fața variabilei.
De exemplu:
$ str_firstname
$ i_tax
sau $ num_tax
$ arr_range
Sincer, standardele de codare nu spun nimic despre asta. Pe de o parte, cred că acest lucru face ca un cod mai curat în sfera generală de cod, dar există o mulțime de dezvoltatori care nu le place Notă ungară.
Deoarece convențiile de codare nu spun nimic despre ele, ezită să le recomand, deoarece vreau să rămân cât mai aproape posibil de standarde. Ca atare, trebuie să recomand că este mai bine să urmați standardele de codificare.
În conformitate cu tema de a face codul nostru cât mai ușor de citit și autocumentant, este logic să tragem acest lucru prin codul sursă până la fișierele pe care le vom alcătui temei, pluginului sau cerere.
În conformitate cu standardele de codificare:
Fișierele trebuie denumite descriptiv folosind litere mici. Expresiile ar trebui să fie separate.
În conformitate cu exemplul nostru anterior, să spunem că colaborăm Local_File_Operations
atunci fișierul va fi numit clasa-locale-file-operations.php
.
Destul de usor.
Apoi, dacă lucrați la un plugin numit Instagram_Foo
atunci fișierul ar trebui să fie numit Instagram-foo.php
; cu toate acestea, este de remarcat faptul că, dacă utilizați un anumit tip de metode avansate pentru dezvoltarea pluginurilor dvs., cum ar fi păstrarea fișierului de clasă plugin în propriul fișier și apoi încărcarea utilizând un alt fișier, atunci structura fișierului dvs. poate fi:
clasa-instagram-foo.php
Instagram-foo.php
Unde Instagram-foo.php
este responsabil pentru încărcarea clasa-instagram-foo.php
. Desigur, acest lucru are sens doar dacă utilizați OOP când scrieți pluginurile WordPress.
Când vine vorba de argumentarea funcțiilor trecute, este important să ne amintim că dacă numele funcțiilor descriu acțiunile care sunt luate de clasă, atunci argumentul ar trebui să reprezinte ceea ce funcția funcționează efectiv.
Din standardele de codificare:
Preferați valorile șirului la doar
Adevărat
șifals
când apelați funcții.
Deoarece valorile booleene pot fi neclare atunci când trec valorile într-o funcție, aceasta face dificilă stabilirea exactă a funcției.
De exemplu, să folosim exemplul de mai sus într-un mod ușor diferit:
// Clasa de definitie a clasei Local_File_Manager functie publica manage_file ($ filename, true) if (true) // Deschide fisierul altceva // Sterge fisierul // Cum folosim acest cod $ file_manager = noul Local_File_Manager (); $ file_manager-> manager_file ('foo.txt', adevărat);
Este mai greu de înțeles decât, să spunem, ceva de genul:
// Clasa de clasa de definitie Local_File_Manager functie publica open_file ($ filename) // deschide fisierul function public delete_file ($ filename) // sterge fisierul // Cum folosim acest cod $ file_manager = new Local_File_Manager (); $ fișier_manager-> open_file ('foo.txt'); $ fișier_manager-> delete_file ("foo.txt");
În plus, amintiți-vă că argumentele care sunt transmise în funcții sunt încă variabile în sine și ele însele, astfel încât acestea sunt supuse convențiilor de numire variabile pe care le-am detaliat mai sus.
Am analizat în detaliu argumentele privind convențiile și funcțiile de numire în standardele de codificare. Sperăm că acest lucru a contribuit la furnizarea nu numai a unui ghid pentru îmbunătățirea anumitor aspecte ale codului dvs. WordPress, dar și pentru a explica raționamentul din spatele anumitor practici.
În următorul articol, vom examina semnificația cotelor unice și a citatelor duble în contextul lucrului cu șiruri în dezvoltarea WordPress.
Acolo este o diferență în ceea ce privește modul în care sunt interpretate de PHP și există condiții în care ar trebui să le utilizați unul pe celălalt și vom revizui acest lucru în articolul următor.