-
Inca de la primele bucati de cod scrise de programatori au aparut si primele probleme. De cand au aparut primii programatori a aparut si codul scris urat.
Cred ca fiecare carte respectabila de programare care explica de la inceput un limbaj se afla doua elemente importante, comentariile si reguli generale de scriere.
Eu la inceputurile mele de programare evident nu puneam nici un comentariu si nici nu ma omoram sa aranjez codul, toate astea pentru ca ma interesa sa mearga si… cam atat (mai ales ca nuprea mergeau din prima). Cu cat incepi sa lucrezi mai mult pe bucati de cod scrise de altii, incepi sa intelegi de ce sunt o inventie atat de buna comentarile si aranjarea in pagina.
De ce sa pierzi vremea ca sa aranjezi codul si sa-l comentezi? Hmmm, din perspectiva mea, pentru ca nu-mi place sa pierd vremea cautand bug-uri si incercand sa-mi dau seama ce am facut acum o gramada de vreme, sau chiar saptamana trecuta, orice programator prefera sa scrie cod nu sa-l repare. Munca pe care o depui acum o sa-ti fie rasplatita in timp.
Sa luam un exemplu:
1while($row= mysql_fetch_array($rez)) 2 { 3 $dump=$row["ceva"]; 4 $$dump =$row["altceva"]; 5 } 6 $name=basename($_SERVER["PHP_SELF"]); 7 $query = 'select t.ceva, sum(a.altceva) as REZ from tabela t, altatab a WHERE 8adresa="'.$name.'" and t.val1=a.val2'; 9$result = mysql_query($query);
Se intelege repede din codul de mai sus care este rezultatul. Dar daca acest cod este ascuns printre alte cateva sute/mii de linii de cod, deja nu se mai intelege nimic.
Cateva probleme:
- codul nu este ordonat, macar daca nu il comentezi ARANJEAZA-L!!! Nu te gandi niciodata ca o faci pentru altcineva, de cele mai multe ori tot eu fac debuging pe un script facut de mine, dar cand trebuie sa urmaresc logica altcuiva… ganduri necurate imi strabat mintea.
- fii consistent, in general atunci cand lucrez pe un script care nu e facut de mine incerc sa pastrez consistenta modului de scriere (daca exista) a celui care a scris bucata de cod, asa nu o sa trebuiasca sa urmaresti doua moduri de scriere iar totul o sa fie mult mai vizual.
- scrierea conform standardului, chiar ieri aveam o discutie despre diferenta intre JOIN si conditie in WHERE in Oracle, concluzia a fost ca nu reduc performanta. Trebuie sa recunosc, nici eu nu foloseam aceasta tehnica pana nu de mult, dar o interogare scrisa aranjat o sa fie mult mai usor de inteles ulterior. Chiar daca nu o faci conform standardului, macar sa fie aranjata, cand sari de doua tabele si ai gresit ceva o sa fie mult mai usor sa urmaresti ce ai facut.
- scrie interogarile pe mai multe linii. MySQL nu intoarce erori explicite de multe ori, spune doar zona in care a gasit o eroare, atunci cand sunt pe mai multe linii vei afla si linia cu probleme. Un alt mare avantaj este ca poti sa comentezi cu usurinta o linie.
Varianta “frumoasa” a codului de mai sus ar fi ceva de genul:
1while($row = mysql_fetch_array($rez)) { 2 $dump = $row["ceva"]; 3 $$dump = $row["altceva"]; 4} 5 6$name = basename($_SERVER["PHP_SELF"]); 7 8$query = "SELECT t.ceva, SUM(a.altceva) AS rez 9 FROM tabela AS t, altatab AS a 10 WHERE adresa='".$name."' 11 AND t.val1=a.val2"; 12$result = mysql_query($query);
Parca arata altfel nu? Evident se poate aranja si mai mult dar eu unul sunt multumit daca gasesc asa ceva in codul altcuiva.
Un blog interesant despre Lazy Ones (lenesi) este aici.
-
Chiar daca PHP 6 nu este gata inca, sau mai bine zis mai are destul pana va ajunge la varianta finala, deja am gasit o carte dedicata noii versiuni avand titlul PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide.
Schimbarile care vor avea loc in cadrul PHP 6 sunt deja cunoscute, iar versiunea CVS este disponibila.
Avand in vedere cele de mai sus, se poate crede ca aceasta carte se grabeste sa anunte venirea, pentru ca cititorul sa aiba parte de o abordare a noii versiuni.
Am avut ocazia sa rasfoiesc versiunea in romana a cartii PHP si MySQL pentru site-uri WEB dinamice. Pe spatele cartii sunt bifate nivelurile “Incepator”, “Mediu” si “Avansat”. Cu toate acestea cartea pare mai mult o adaptare a cartii pentru versiunea 4 la versiunea 5, totusi fara a se atinge aproape de loc (sau chiar de loc) aspecte cum ar fi POO, XML, Streams sau abordari prea succinte pentru elemente complexe cum ar fi array-urile. Intradevar cartea nu se pierde in multe detalii iar la final exista prezentate cateva exemple concrete.
Pe Amazon.com se pot rasfoi cateva pagini din carte, din pacate editia precedenta chiar si catii de PHP 5 si se poate vedea ca nu au fost prea multe schimbari in cuprins cel putin, evitand abordari detaliate pentru subiecte care au constituit modificari majore intre versiuni.
Concluzionand eu unul nu ma astept decat la o carte adaptata usor la modificarile care au avut loc de la ultima versiune si nici de cum la o carte orientata spre noua versiune, gata sa evidentieze noile facilitati introduse (sau cele eliminate) in versiunea 6 a PHP. Probabil lansarea timpurie a cartii nu este decat o politica de marketing.