1 #### ##### # # # ##### ### #### ## # # ### ##
2 # # # # # # # # # # # # # ## # # # #
3 # # # # # # # # # # # # # # # # #
4 #### # ### # ##### # #### ###### # # # # ######
5 # # # # # # # # # # ## # # #
6 # # # # # # # # # # # # # # # #
7 #### # # ###### # ### #### # # # # ### # #
9 STYL PISANIA KODU WATERMELON CMS'A
12 ____________________________________________________________________________
14 To jest OBOWIĄZUJĄCY dla programistów Watermelon CMS'a styl programowa-
15 nia. Jeśli zauważysz, że ktoś zrobił inaczej, popraw. Jeśli robi to
16 notorycznie - poinformuj go o tym.
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 "->" )
58 Po przecinku zawsze spacja!
64 Normalnie używamy do stringów apostrofów. Cudzysłowy używamy dla
65 zapytań SQL, oraz tam gdzie to konieczne (np. "\n")
69 Prawdę, fałsz i null zapisujemy tak:
75 Stałe piszemy także dużymi literami. Stałe samego CMS'a zaczynają
78 Stałe własnych modułów MUSIMY poprzedzić prefiksem, aby mieć
79 pewność, że nie będzie kolidowało z czymś innym. Przykład stałej
84 Pamiętamy, żeby używać stałych we własnych modułach tylko jeśli
85 to NAPRAWDĘ konieczne.
89 a) Pobieranie danych z DB
91 Dane z bazy danych pobieramy do obiektu! Pobieranie danych poprzez
92 funkcję result jest ZABRONIONE, a do tablicy odradzane.
94 Przykład pobrania danych, które jest OK:
96 $data = $this->db->query("SELECT * FROM `test`");
98 while($item = $data->to_obj())
103 b) Działania na tablicach
105 Jeśli chcesz przejść po wszystkich elementach tablicy użyj foreach.
106 for jest odradzane w tym przypadku.
110 foreach($array as $item)
117 for($i = 0 ; $i < count($array) ; $i++)
122 Myślę, że różnica czytelności obu przykładów pokazuje, dlaczego
123 należy użyć foreach ;)
127 Pod ŻADNYM POZOREM NIE UŻYWAJ globali. Globale są do niczego.
129 Możliwe, że wydaje się Tobie, że potrzebujesz ich, ale są sposoby
132 Jeśli potrzebujesz jakichś danych w kilku funkcjach w klasie, dodaj
133 prywatną zmienną do klasy.
135 Jeśli potrzebujesz potrzebujesz jakichś danych przy kilku odpale-
136 niach danej funkcji, użyj zmiennej statycznej.
138 Jeśli potrzebujesz danych jakiejś klasy w zupełnie różnych miejsca-
139 ch kodu, użyj Singletona.
141 Przyjęliśmy, że tak to ma wyglądać:
149 static function Instance()
151 if(!self::$instance instanceof self)
152 self::$instance = new self;
153 return self::$instance;
156 oraz jeszcze zmienna:
158 private static $instance = NULL; // Singleton...
162 Wszystkie pliki zapisujemy z kodowaniem UTF-8 i uniksowymi enterami,
165 Jeśli widzisz w projekcie jakiś stary i zaniedbany plik, możesz się
166 upewnić co do poprawności tabów i enterów poprzez funkcję "Znajdź i
172 Zamień: " " <- tutaj trzy spacje
179 Projekt oryginalnie był pisany na windowsie na różnych edytorach
180 jeszcze przed wprowadzeniem konkretnych zasad. Właśnie to spowodo-
181 wało globalny "syf" w projekcie. W przypadku Eclipse PDT (w tym
182 programie obecnie piszę wcms'a) możesz użyć File->Convert Line