Przed rozpoczeciem kodowania warto by bylo opracowac styl kodowania dla projektu. Proponuje zachowanie takiej samej konwencji jak w przypadku projektu Coyote. Wazne jest aby wszyscy stosowali sie do takiego stylu. Oto propozycje:
- Nazewnictwo
Zarówno w przypadku nazw funkcji, zmiennych czy stałych oraz klas stosujemy nazewnictwo angielskie. Np. Templates(), sql_query(), $topic_id. Nie deklaruj danych w ten sposób: Szablony(), zapytanie_sql(), $id_tematu. Nazwy zmiennych powinny rozpoczynać się od małych liter; nazwy klas powinny rozpoczynać się od liter wielkich. Stałe powinny być pisane jedynie wielkimi literami. Dozwolony jest znak _ (podkreslenie) w nazwach zmiennych - nie stosujemy natomiast stylu wielbladziego - np. $TopicId.
- Wcięcia
Stosujemy zasadę, że wcięcia powinny wynosić 4 (cztery) spację; niedozwolone jest używanie tabulatorów.
<?
if ( $db->sql_query($sql) )
{
do_something();
}
?>
Tak więc podstawowe wcięcie o którego zaczynamy pierwszy blok instrukcji ma wcięcie w wielkości 4 spacji.
- Struktury kontrolne
Do struktur kontrolnych zaliczamy instrukcję if(), while(), for() itp. Zalecane jest, aby w strukturach kontrolnych znalazla się jedna spacja po i przed nawiasem. Przykład:
if ( ( empty($cookie) ) && ( $id != 0 ) )
{
// jakies zadanie
}
else
if ( empty($cookie) )
{
// zrób coś innego
}
Prosimy też o wpisywanie nawiasów klamrowych nawet wówczas, gdy nie są one potrzebne (np. gdy występuje jedynie jedna instrukcja). Zwiększa to czytelność kodu oraz eliminuje ew. błędy. Nie zapominamy oczywiście o czterech spacji wcięcia. Niedopuszczalna jest np. taka konstrukcja:
if ($x > 0) // coś tam
if ( $y > 1)
// coś tam
- Deklaracja funkcji
Nie ma żadnych żelaznych reguł regulujących sposób definicji funkcji. Zaleca się jednak, aby funkcje były pisane małymi literami bez stosowania 'stylu wielbłądziego'. Dopuszczalne jest użycie znaku _ - np.
function do_something()
{
// dobrze
}
function DoSomething()
{
// zle
}
- Komentarze
Jest jedna zasda: im więcej komentarzy tym lepiej. Dodatkowo każdy plik PHP powinien mieć na górze na główek wyglądający mniej więcej tak:
/****************************************************************************
* account_edit.php
* -------------------------
* rozpoczety : 24.07.2003 r.
* wersja : $Revision$
* zmiana : $Date$
*
****************************************************************************/
Na samej górze powinna się znaleźć nazwa pliku. Dalej data rozpoczęcia oraz znaczniki CVS: $Revision: 1.6 $ oraz $Date: 2004/06/08 11:44:25 $. W te miejsca CVS wstawi odpowiednie dane - jak aktualny numer wersji pliku oraz datę ostatniej edycji. Zaleca się również, aby na samym dole przed znakiem ?> umieszczać kolejny znacznik CVS:
// $Id$
?>
Dzięki temu na samym dole znajdzie się dokładniejsza informacja (w formie komentarza) na temat ostatniej edycji pliku, dacie oraz autorze.
Jeżeli chodzi o komentowanie kodu to używaj komentarzy w stylu C ( /* */ ) oraz //. Oba są OK - nie używaj natomiast standardu komentowania Perla (#). Komentarze piszemy w języku polskim.
- ChangeLog
Bardzo istotną sprawą podczas pracy grupowej jest plik ChangeLog, który powinien zawierać listę zmian w projekcie. Oto jak wygląda fragment pliku ChangeLog, projektu Coyote:
-------------------------
Coyote ChangeLog
-------------------------
$Id: coyote.html,v 1.2 2004/06/08 11:44:25 Adam Exp $
$Source: /coyote/coyote-0-9-1/inne/coyote.html,v $
10.09.2003 <[email protected]>
* poprawiony blad w pliku function_post.php (zla nazwa funkcji)
* uporzadkowanie kodu w pliku bbcode.php
* nowy fragment kodu powodujacy usuwanie niepotrzebnych znacznikow na forum
* lista emoticonek przeniesiona do pliku images.inc
* drobna poprawka w formularzu forum_admin.tpl - zaznaczenie czy w poscie maja byc wyswietlone emoticonki
* drobne poprawki w szablonach (estetyczne)
* admin.php: ukrywanie tekstu 'Wyslij odpowiedz na e-mail' jezeli user edytuje swoj post, ale nie jest to jego temat
Proponuje takze stosowac ten ChangeLog w encyklopedii (lub podobny).
- Stałe
W przypadku deklaracji stałych, prosimy używać jedynie wielkich liter - pozwoli to na wyróżnienie stałych od zmiennych.
- Zmienne
Zaleca się deklarowanie zmiennych, które były by najbardziej opisowe - np. $topic_id (ID tematu), $post_id (ID postu). Nie deklaruj zmiennych jednoznakowych - np. $x, $y, $z. Zmienne jednoznakowe mogą mieć zastosowanie jedynie w przypadku pętli for() i zmiennej pomocniczej.
- Zapisywanie instrukcji SQL
W sprawie komend SQL kierujemy się zasadą, że nie należy oszczędzać linijek na to, aby w dłuższych zapytaniach były one czytelniejsze. Czyli: niech zapytania zajmują kilka linijek jeżeli jest to potrzebne - przykład:
$sql = 'SELECT *
FROM ' . TOPIC . '
WHERE topic_id = ' . $_GET['id'];
Słowa kluczowe SQL muszą być napisane wielkimi literami (SELECT, UPDATE, WHERE itp) natomiast nazwy kolumn małymi. Przyjęło się aby całe zapytanie ujmować jedynie w pojedyncze apostrofy. Jak widzisz w powyższym przykładzie w przypadku wstawienia stałej lub zmiennej "rozdzielamy" łańcuch. Jeżeli natomiast chodzi o kolumny typu char() to należy używać apostrofów podwójnych:
$sql = 'UPDATE ' . TOPIC . ' SET
topic_subject = "' . $_POST['topic_subject'] . '"';
Oto inne przykłady:
$sql = 'SELECT topic_subject, topic_user, user_name
FROM ' . TOPIC . ', ' . USERS . '
WHERE topic_id = ' . $_GET['id'] . '
AND user_id = topic_id
AND topic_id > 100';
Zwróć uwagę na zapis słów kluczowych AND oraz OR - zostały one zapisane z wcięciem w wielkości dwóch spacji.