|
Salut!
Intotdeauna am fost de acord ca un cod "bun" este un cod "bun-formatat".
Am decis ca sa scriu un articol despre conventii si standarde de scriere a codului
pe care le-am folosit in proiectele mele.
Cateva note pe care vreau sa le aduc:
1. Intotdeauna separ codul OO de cel procedural
2. Nu folosesc comentarii de tip shell (‘#’)
3. Folosesc intotdeauna tag-ul de start <?PHP ?>
4. Editorul EditPlus are optiuni de inlocuire a tab-urilor cu spatii pe care le
folosesc intotdeauna
Operatii:
Am cateva reguli de baza in ceea ce priveste formatarea operatiilor
1. Intotdeauna adaug spatii inainte si
dupa operatii de atribuire, logice si de comparare
|
<?php
//operatii de atribuire:
$a = 5;
$my_str .= "bla bla bla";
$i += 2;
//operatii de comparare si
logice:
if (($name == 'Viktor') or ($name == 'Andrei') ) {
echo 'Inregistrare gasita!';
}
?>
|
| |
|
2. De asemenea incerc sa folosesc (dar aproape
intotdeauna nu reusesc) acceasi sintaxa pentru operatiile aritmetice:
|
<?php
//Arata mai bine
$a = (10 * $b) / 20;
//fata de:
$a = (10*$b)/20;
?>
|
|
3. Cateodata gasesc urmatoarea structura
necesara:
|
<?php
$var_name_1 = 5;
$b = 7;
?>
|
|
Structuri de control:
Alte
reguli pe care le folosesc:
1. Las un spatiu dupa fiecare structura
si parantezele sale [de exemplu : if () ] .
2. Intotdeauna
folosesc {} pentru a indica o structura indiferent
de numarul de instructiuni care e continut in structura respectiva.
3. Codul din interiorul unei structuri il marchez prin intermediul unui tab (de fapt 4 spatii) in
interiorul structurii.
4. Nu e o regula, dar cateodata pun o linie
intre diferitele structuri
5. Niciodata nu folosesc sintaxa alternativa pentru structuri
(ex: if (conditie):instructiuni
endif;)
if; if..else;
if..elseif;
|
<?php
if ($a == $b) {
/* codul tau aici */
}
if ($a == $b) {
/* codul tau aici */
}else {
/* codul tau aici */
}
if ($a == $b) {
/* codul tau aici */
}elseif ($a == $c) {
/* codul tau aici */
}
?>
|
|
for;
foreach; while;
Las un spatiu aditional dupa
';' in conditia de 'for'.
|
<?php
for ($i; $i < 10; $i++ ) {
/*codul tau aici*/
}
foreach ($arr as $k => $v ) {
/* codul tau aici */
}
while ($i < 10) {
/* codul tau aici */
}
?>
|
|
switch;
|
<?php
switch ($age) {
case 19:
echo 'You are in the army now!';
break;
case 100:
echo 'Incredible!!';
break;
default:
echo 'Nothing to say!';
}
?>
|
|
Functii si Clase
Nu exista nimic special in legatura cu formatarea functiilor
si claselor, utilizand, in fapt, tehnicile discutate mai sus.
Totusi as vrea sa fac 3 remarci:
1. O regula de aur este aceea de a documenta o functie cat de mult
posibil.
2. Acelasi lucru despre clase dar in termeni mai rigurosi.
3. Parantezele {} in clasa si functia de mai jos sunt plasate diferit
fata de structurile discutate mai sus.
|
<?php
/** Function:
void login($user_name = 'nobody', $user_pass = 'nobody'
* ------------------------------------------------------
* Purpose: Member
function handling user login process
* Arguments:
$user_name - string, user name
* $user_pass
- string, user password
* Returns/Assigns: Sets
session variable $logged to 1
* if
function call succeeds and 0
* if
otherwise.
* Name Date Version Change
* Mikeq 20
May 2002 1.1 Description
of change
*/
function login($user_name = 'nobody', $user_pass = 'nobody')
{
/* codul tau aici */
}
?>
|
|
In cazul claselor:
|
<?php
/**
* HTML Form elements
generator for PHP4.
* Explanation: class purpose is
to generate, store and transfer
* btw
pages form elements and their respective values.
* Supported HTML Form elements:
* text;
password; radio; checkbox; image; file; hidden;
* button;
submit; reset;
*/
class Form
{
/* codul tau aici */
}
?>
|
|
Pentru clase am pregatit de asemenea fisier de documentare
diferit care acopera urmatoarele:
|
<?php
/**
* Classname:
Form
* Description:Class for generationg HTML form
elements on fly.
*
Supports all form elements:
*
'text', 'password', 'checkbox', 'radio',
*
'textarea', 'button', 'submit', 'reset', 'select',
*
'hidden','image','file'.
* Version:
0.5
* Author: Victor Farazdagi(Kuulest).
*/
/**
*Instance variables
*/
classname
- 'Form'
debug - folosit pentru a activa
"on/off" modul “debug”
/**
*Instance methods
*/
Toate metodele utilizator prezente
in clasa.
/**
*Internal methods
*/
Toate metodele sistem [interne] prezente
in clasa.
/**
*TODO List:
*/
?>
|
|
Asta e tot!
Kuulest
[Coding Style]
|