This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
dydaktyka:cprog:clean_code [2016/10/02 20:06] pkleczek |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Jak uczynić Twój program czytelnym? ====== | ||
- | ===== Nadawaj rozsądne identyfikatory ===== | ||
- | |||
- | Stosuj identyfikatory, które oddające rolę danej zmiennej, cel działania funkcji itp. | ||
- | |||
- | ===== Dokumentuj kod ===== | ||
- | |||
- | Używaj komentarzy tam, gdzie to wskazane. | ||
- | |||
- | |||
- | ===== Używaj odstępów i pustych linii ===== | ||
- | |||
- | Język C to język //swobodnej postaci//, czyli kompilator po prostu pomija takie znaki niedrukowane. | ||
- | |||
- | Odpowiedz sobie na pytanie, co bardziej czytelne: | ||
- | <code c> | ||
- | int a=3;int b=2;int c,d; | ||
- | </code> | ||
- | czy | ||
- | <code c> | ||
- | int a = 3; | ||
- | int b = 2; | ||
- | int c, d; | ||
- | </code> | ||
- | |||
- | ===== Umieszczaj każdą instrukcję w osobnej linii kodu ===== | ||
- | |||
- | Język C dopuszcza zarówno umieszczanie wielu instrukcji w jednej linii, jak też rozbicie jednej instrukcji na wiele linii (co jednak zmniejsza czytelność). | ||
- | |||
- | Kod zbyt "rozwleczony": | ||
- | <code c> | ||
- | int | ||
- | a | ||
- | = | ||
- | 3; | ||
- | </code> | ||
- | zamiast | ||
- | <code c> | ||
- | int a = 3; | ||
- | </code> | ||
- | |||
- | Kod zbyt ,,ściśnięty'': | ||
- | <code c> | ||
- | if (a) { printf("Niewskazane.") } | ||
- | </code> | ||
- | zamiast | ||
- | <code c> | ||
- | if (a) { | ||
- | printf("OK."); | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== "Złota zasada" ===== | ||
- | |||
- | Pamiętaj -- obecnie, w dobie szybkich komputerów i dużej ilości dostępnej pamięci operacyjnej, głównym celem programisty staje się napisanie działającego, czytelnego kodu. Optymalizacje i "sztuczki" zazwyczaj nie popłacają... | ||
- | |||
- | ===== Wcięcia ===== | ||
- | |||
- | Jedną z zasad tworzenia czytelnego kodu jest umiejętne stosowanie wcięć (//indent//), które oznaczają "poziom zagłębienia" kodu. \\ | ||
- | Choć kompilator C pomija znaki białe (a więc m.in. wcięcia i znaki nowej linii), to jednak dla człowieka taki kod byłby ciężki do odczytania. | ||
- | |||
- | Zasada brzmi: | ||
- | * początek nowego bloku instrukcji oznacza zwiększenie ilości wcięć o jeden poziom | ||
- | * koniec bloku instrukcji oznacza zmniejszenie ilości wcięć o jeden poziom | ||
- | |||
- | Zazwyczaj stosuje się wcięcie szerokości jednego tabulatora bądź czterech spacji. | ||
- | |||
- | Przykład: | ||
- | <code c> | ||
- | int main () { | ||
- | --->if (1) { | ||
- | --->--->printf("Hello"); | ||
- | --->--->printf("World!\n"); | ||
- | --->} | ||
- | } | ||
- | </code> | ||
- | |||
- | :!: Kwestia formatowania to rzecz umowna -- istnieją różne szkoły formatowania, a programiści toczą o to nieustanne "święte wojny". Najważniejsza zasada brzmi: **Stosuj reguły __konsekwentnie__!** | ||
- | |||
- | ==== Autoformatowanie kodu z użyciem IDE ==== | ||
- | |||
- | |||
- | Całą tą "czarną robotę" związaną z formatowaniem może za Ciebie wykonać [[https://en.wikipedia.org/wiki/Integrated_development_environment|IDE]] (tu: CodeBlocks). | ||
- | |||
- | Aby automatycznie sformatować kod, kliknij prawym przyciskiem myszy na oknie edytora tekstu i wybierz z menu kontekstowego opcję //Format use AStyle//. | ||
- | |||
- | Aby zmienić ustawienia autoformatowania wejdź w //Settings -> Editor...// i z listy z ikonami po lewej wybierz //Source formatter//. \\ | ||
- | W przykładach na zajęciach stosuję następujące opcje formatowania: | ||
- | * zakładka //Style// | ||
- | * Bracket style: K&R | ||
- | * zakładka //Indentation// | ||
- | * (bez zmian) | ||
- | * zakładka //Formatting// | ||
- | * Pad empty lines around header blocks (e.g. 'if', 'while'...) -- zaznaczone | ||
- | * Insert space padding around operators -- zaznaczone | ||
- | * (pozostałe opcje odznaczone) |