1 #### ##### # # # ##### ### #### ## # # ### ##
2 # # # # # # # # # # # # # ## # # # #
3 # # # # # # # # # # # # # # # # #
4 #### # ### # ##### # #### ###### # # # # ######
5 # # # # # # # # # # ## # # #
6 # # # # # # # # # # # # # # # #
7 #### # # ###### # ### #### # # # # ### # #
9 STYL PISANIA KODU WATERMELON CMS-A
12 ____________________________________________________________________________
14 To jest obowiązyjący dla programistów Watermelon CMS-a styl programowa-
15 nia. Jednolity styl poprawia wygląd kodu i ułatwia jego późniejszą refa-
16 ktoryzację. Jeśli zauważysz, że ktoś zrobił inaczej, popraw.
22 Nie ma tabów. Zamiast tabów trzy spacje!
26 Typowy styl - przed i po klamerce enter.
39 Przed i po operatorze spacja.
41 $abcde = $x + ( 6 + 2 ) . 'abc';
43 Co do nawiasów - dotyczy tylko wyrażeń, czyli:
49 jakas_funkcja(); // nie robimy po nazwie funkcji spacji -
50 // według nas jest to psucie czytelności.
54 $test = ( $a * $h ) / 2;
56 Pisanie spacji nie dotyczy operatorów zasięgu ( "::" oraz "->" )
61 Po przecinku zawsze spacja!
67 Normalnie używamy do stringów apostrofów. Cudzysłowy używamy dla
68 zapytań SQL, oraz tam gdzie to konieczne (np. "\n")
72 Stałe piszemy także dużymi literami. Stałe samego CMS-a zaczynają
75 Stałe są używane tylko przez sam CMS. Moduły nie korzystają ze
76 stałych, ponieważ jest to mało wygodne i mało elastyczne. Jeśli
77 jednak z jakiegoś powodu MUSISZ (np. dla testów) użyć stałej, to
78 dodaj do niej prefiks, żeby nie kolidowała z niczym innym.
82 a) Pobieranie danych z DB
84 Dane z bazy danych pobieramy do obiektu. Nie pobieramy nic przez
85 funkcję mysql_result. Ewentualnie można użyć tablicy zamiast
86 obiektu, ale raczej preferujemy obiekty (kod wygląda czytelniej)
88 Przykład pobrania danych, które jest OK:
90 $data = $this->db->query("SELECT * FROM `test`");
92 while($item = $data->to_obj())
97 b) Działania na tablicach
99 Jeśli chcesz przejść po wszystkich elementach tablicy użyj foreach,
100 ponieważ jest dużo czytelniejsze od for. Ewentualnie można użyć
101 funkcji typu array_map, ale jest to raczej mniej wygodne i mniej
106 foreach($array as $item)
113 for($i = 0 ; $i < count($array) ; $i++)
118 Myślę, że różnica czytelności obu przykładów pokazuje, dlaczego
119 prawie zawsze lepiej użyć foreach ;)
123 Nie używamy słowa kluczowego global. To jest stare rozwiązanie.
124 Wydaje się proste w użyciu i wygodne, ale w rzeczywistości powoduje
125 śmietnik w kodzie. Po za tym AFAIK od PHP6 nie będzie już globali.
126 Zamiast globali można użyć właściwości klas, słowa kluczowego
127 static, rejestru (wzorzec projektowy registry) itp. Można by było
128 też użyć singletona, ale w Watermelonie NIE UŻYWAMY singletona.
132 W pętlach for liczbę iteracji piszemy przed pierwszym średnikiem, a
133 po nim jedynie robimy porównanie dwóch zmiennych.
137 for($i = 0, $j = count($array) ; $i < $j ; $i++)
144 for($i = 0 ; $i < count($array) ; $i++)
149 Ot, taki dobry nawyk. Po co po każdej iteracji ma wykonywać jakąś
150 funkcję (w tym przypadku count()), skoro zwracana wartość jest
155 Wszystkie pliki zapisujemy z kodowaniem UTF-8 i uniksowymi enterami,
156 tzn. \n, nie \r\n jak w Windowsie.