By kod naszego programu, skryptu czy chociażby strony WWW był czytelny, powinniśmy trzymać się jakiś standardów jego pisania. Oto kilka moich nawyków, propozycji dotyczących PHP.
Wcięcia
Bardzo często spotykam się z opinią, by do tworzenia wcięć używać spacji. Sam zresztą tak robiłem bardzo długo. Ale jednak teraz będę promować Tab, który pozwala chociażby na tak błahą rzecz jaką jest ustawienie jego szerkości przez edytor programistyczny by odpowiadał jednej, dwóm czy czterem spacjom.
<?php
if(stmt){
doSth();
}Nazewnictwo zmiennych, stałych, funkcji, metod oraz klas
Nie ma dla mnie nic gorszego niż kod, w którym jest $someVar, $some_var, $_some_var na raz.
- Zmienne, pola klas i obiektów
- Wymagany znak dolara ($) + nazwa zmiennej zapisana w "standardzie" camelCase, zaczynając od małej litery: $someUselessVariable. Dotyczy to również pól klas i obiektów oraz indeksów tablic.
- Stałe
- Wszystko wielkimi literami, a do separacji kolejnych słów używamy znaku podkreślenia: SOME_CONSTANT.
- Funkcje i metody
- Dokładnie tak samo jak w przypadku zmiennych, oczywiście z pominięciem znaku dolara. :)
- Klasy
- Jeżeli nazwa klasy ma być równocześnie ścieżką do jej pliku (a'la ZF) wtedy stosujemy CamelCase, rozpoczynając nazwę wielką literą, a do oddzielenia kolejnych wyrazów używamy znaku podkreślenia, który zostanie zamieniony na slash lub backslash w ścieżce.
Jeżeli nie decydujemy się na takie coś, nazwa jest dokładnie tak samo zapisywana jak w przypadku funkcji i metod.
- Pliki
- Standardowy CamelCase, rozpoczynając wielką literą.
Bloki kodu PHP
Bez żadnych short_tagów oraz z pominięciem końcowego ?>. Dlaczego? Nie jest on wymagany, a może porowadzić do przypadkowego dostania się jakiejś spacji czy entera, który może przeszkodzić np. w wysłaniu nagłówków HTTP.
<?php
$my->php->code['here'];
Łączenie stringów
<?php
//nie
$myString = "Hello $who.";
//lepiej
$myString = 'Hello ' . $who . '.';
//najlepiej:
$myString = sprintf('Hello %s.', $who);Tablice
W przypadku krótkich zapisów można skorzystać z jednej linii do upchania wszystkiego.
<?php
$array = array(1, 2, 'car', 'home', 77.2);
Jednak w przypadku nieco dłuższych każdy element tablicy w osobnej linii, bądź w przpadku ni takich, ni takich po kilka (jednak zachowując stałą ilość) w linii
<?php
$short = array(1, 2, 3, 6, 7, 8);
$medium = array(
'cat', 'dog', 'rabbit', 'horse',
'parrot', 'cow', 'snake', 'bird',
'camel', 'mice', 'fly', 'bug'
);
$long = array(
'Lorem ipsum dolor sit ament',
'Lorem ipsum dolor sit ament',
'Lorem ipsum dolor sit ament'
);
Klamry i dodatkowe spacje
Klamra otwierająca powinna być w tej samej linii co wyrażenie, zamykająca natomiast w nowej.
<?php
if(stmt){
doSth();
}Nie ma się też co krępować przed spacjami pomiędzy operatorami (z pominięciem ->) oraz by wyrównać pewne fragmenty kodu.
<?php
if($myVar == 'some stmt'){
$car = 'red';
$cat = 'white';
$note = 'pink';
}No i to by było chyba na tyle. :) Jakieś uwagi, sugestie?