vineri, 20 martie 2009

Programming Tips


Este arhicunoscuta printre programatori expresia: "Scrie codul gandindu-te ca acela care il citeste este un criminal!".
Ei, nu e chiar asa de grav, insa pentru a ne ajuta intre noi, programatorii si chiar si pe noi insine, este bine sa urmam cateva sfaturi si indemnuri atunci cand scriem sau modificam cod. Nu le zic reguli pentru ca nu ne plac regulile! De cand lucrez in domeniu am invatat si eu ca este foarte bine sa comentezi codul de cate ori ai ocazia, si intodeauna cand modifici ceva.

+Variabile, nume de functii, clase
Pentru variabile, folosesc nume de genul $domainId sau $usersArray. La nume de functii este foarte urat sa folosesti majuscule, de aceea
intodeauna functiile, fie ca apartin unei clase sau nu vor fi denumite asa: find_online_users() sau get_setting().
Pentru clase, este valabila regula de la variabile: class MailSender{} sau class Page{}.

+Instructiuni
De cele mai multe ori suntem tentati sa scriem:
$index.= $bool ? "yes" : "no";
Este mai putin de scris insa mai dificil de intretinut un astfel de cod. Desigur este recomandat atunci cand avem de facut atribuiri simple care depind doar de o singura variabila.
Dar ce ne facem cu bucata de mai sus atunci cand $index o sa depinda de doua variabile sau de trei sau de valoarea unei functii... . Pai bine o sa ziceti ca schimb codul mai adaug un si apoi un ori - si la sfarsit ce am - un carnat in care cel mai probabil o sa fiu nevoit sa pun paranteze ca sa-mi dau seama unde creapa! Deci inainte de a folosi o asemenea notatie sa ne gandim intodeauna de 2 ori poate mai bine ar fi sa facem un if:
$bool = is_user_admin();
if($bool and (empty($index) or ($adminId == 0))){

      $index = "yes";
}
else{
      $index = "no";
      $adminId = 0;
}
Un alt avantaj este ca am putut adauga un else, in care sa fac mai multe prelucrari iar instructiunea mea a devenit mai logica! De asemenea trebuie evitate if-urile de genul:
if(is_user_admin()){
      ...
}
Chiar daca functia mea returneaza o valoare booleana, este intodeuna mai bine sa fac o variabila care
$bool = is_user_admin();
retine valoarea returnata de functie. De ce? Deoarece daca mai am nevoie mai jos in cod de valoarea returnata de functie voi folosi variabila, nu mai chem functia a doua oara -si imi optimizez viteza de executie a codului.

+Comentarii
Daca ai de comentat o linie de cod foloseste
if(is_user_admin()){//verify if the user is admin ...
, este mai simplu, insa de cele mai mult ori este mai bine sa comentezi blocul intreg:

//verify if the user is admin ----------------------------------------//
$bool = is_user_admin();
if($bool and (empty($index) or ($adminId == 0))){
      $index = "yes";
}
else{
      $index = "no";
      $adminId = 0;
}
//verify if the user is admin ----------------------------------------//

sau

//FILES REQUIRED ----------------------------------------//
      require_once("includes/classes/main.php");
      require_once("includes/classes/admin.php");

       require_once("includes/functions.php");
//FILES REQUIRED ----------------------------------------//

Astfel stii de unde incepe si unde se termina prelucrarea sau lista de parametri.

Cand modifici un cod, facut de altcineva este bine sa dai informatii:
//modified by Adrian Silimon on 10/04/2009------------------//
      ....
//modified by Adrian Silimon on 10/04/2009------------------//

sau

/*commented by Adrian Silimon on 10/04/2009------------------//
//this function is deprecated
      ....
*/

+Fisiere
Orice mediu de dezvoltare serios, iti ofera posibilitatea de a folosi tag-uri speciale pentru a descrie functionalitatea si
utilitatea fiecarui fisier din proiect. De exemplu la Zend Studio mi se ofera suport pentru phpDoc si la inceputul fiecarui fisier php
am ceva de genul:

<?php

/**
* SqlDatabase class, is very useful to access MySql databases from any php script
* You can made as many objects as databases you have to accesss!
* Be ware that your database collation must be utf-8, else SqlDatabase won't work!
*
* @abstract object of this class is used to access database
* @author Adrian Silimon
* @version 1.1
* @package Enur v1.2
*/

      ...

In consecinta pot sa generez foarte usor documentatie pentru proiecul meu parsand lui phpDoc fisierele.

Adevarul este ca nici au nu am stiut lucrurile astea de la inceput, insa cu timpul am realizat ca sunt foarte utile, mai ales cand lucreaza mai multi programatori pe un proiect.

Niciun comentariu:

 

Blogul s-a mutat la o noua adresa!

Vei fi redirectionat automat la noul domeniu. Daca nu vrei sa astepti mergi la http://adrian.silimon.eu/ si nu uita sa-ti actualizezi semnele de carte (bookmarks).