Stacks Image 39

Tytuł zbioru maksym François de La Rochefoucaulda wydanego w roku 1664 w Hadze.

Maksymy programistyczne

Maksymy są jak kierunkowskazy ułatwiające nam poruszanie się w rozpatrywanej dziedzinie. Pozwalają unikać błędów i omijać piętrzące się rafy problemów. Poniżej zebrano maksymy programistyczne na jakie można natknąć się w literaturze albo przeglądając sieć WWW. Warto się z nimi zaznajomić i postarać się stosować je w praktyce.

Niektóre z nich są na tyle stare, że odnoszą się do paradygmatów programowania mniej popularnych w obecnych czasach. Postanowiono jednak pozostawić je z kronikarskiego obowiązku.

Stacks Image 137

Maksymy z książki Van Tassela

Projektowanie programu

BUZI³ — bez udziwnień zapisuj idioto.
         -
Kelly Johnson

Dobieraj reprezentację danych zgodną z zadaniem.

Efekt projektowania ma być poprawny.

Krótki moduł to dobry moduł.

Ma być w porządku od początku.

Najpierw projekt, potem kodowanie.

Napisz pseudoprogram, zanim zaczniesz kodować.

Nie bój się zaczynać od nowa.

Nie programuj od nowa obliczania pierwiastka kwadratowego.

Ograniczaj do minimum stosowanie skoków.

Parametryzuj za pomocą zmiennych a nie stałych.

Pisz najpierw po polsku.

Projektując, dbaj o uniwersalność programu.

Projektując, planuj zmiany programu.

Projektuj zawczasu dane testowe.

Wybieraj jak najstaranniej algorytm rozwiązania.

Wyznacz realistyczne cele zawczasu i jasno je formułuj.

Zacznij dokumentować na etapie kodowania.


Sprawność² programu

Czytelność jest zwykle ważniejsza niż sprawność.

Gdy coś nie działa, jego sprawność nie ma znaczenia.

Inicjuj zmienne podczas kompilacji⁴.

Optymalizuj najpierw pętle wewnętrzne.

Sporządzaj profile dynamiczne swoich programów⁵.

Sprawność, jaką chcesz osiągnąć, ustalaj na etapie projektowania.

Stosuj kompilatory optymalizujące.

Stosuj moduły ładowalne.

Stosuj sprawne bloki wejścia/wyjścia.

Stosuj wskaźniki zalecanego typu
.

Unikaj mieszanych typów danych⁷.


Styl programowania

Błędne komentarze to gorzej niż zupełny brak komentarzy.

Dawaj więcej komentarzy niż będzie ci, jak sądzisz, potrzeba.

Komentarz ma dawać coś więcej niż tylko parafrazę tekstu programu.

Nawiasy kosztują mniej niż błędy.

Porządkuj listy według alfabetu⁸.

Programy mają być czytane przez ludzi.

Stosuj do komentarzy te same wcięcia, co do tekstu, który komentują.

Stosuj komentarze wstępne
.

Stosuj odstępy do poprawiania czytelności.

Stosuj przewodniki w długich programach¹
.

Stosuj wcięcia dla uwidocznienia struktury programu.

Stosuj wcięcia dla uwidocznienia struktury danych.

Używaj dobrych nazw mnemonicznych.

Używaj przedrostków lub przyrostków w nazwach plików¹¹.

Wystarczy jedna instrukcja w wierszu.


Testowanie programu

Gruntowne testowanie nie jest możliwe, testuj więc mądrze.

Każdy zestaw testowy ma reprezentować inną klasę danych.

Próbuj testować metodą zstępującą.

Przeprowadzaj najpierw ręczne testowanie programu.

Spróbuj stworzyć prostą pierwszą wersję, aby przetestować podstawowe cechy projektu.

Stosuj minimalną liczbę zestawów testowych.

Testuj sytuacje normalne, krańcowe i wyjątkowe.

Układaj dane testowe dla każdej drogi¹².

Wcześnie zaczynaj testować.


Uruchamianie programu

Dowiaduj się, z jakich pomocy możesz skorzystać podczas uruchamiania.

Najpierw sprawdzaj na piechotę.

Niech będzie od razu w porządku.

Sprawdzaj sensowność danych wejściowych.

Stosuj echo-testy do danych wejściowych.

Stosuj kompilatory diagnostyczne¹³.

Wprowadzaj zawczasu wydruki kontrolne.

Stacks Image 84

Maksymy znalezione w WWW

Język programowania

A language that doesn’t affect the way you think about programming is not worth knowing.
         -
Alan Perlis

Projektowanie programu

Nie należy mnożyć bytów ponad potrzebę.
         -
William Ockham¹

Stacks Image 139

Przypisy

¹ Autorem tak sformułowanej maksymy jest być może Johannes Clauberg albo John Punch.

² Sprawność w znaczeniu szybkość działania.

³ W oryginale: "KISS - keep it simple, stupid!".

⁴ Inicjuj zmienne przy ich deklarowaniu.

⁵ Na przykład zestaw narzędzi do profilowania Instruments dla środowiska Xcode.

⁶ Na szybkość działania progarmu może mieć wpływ np. użycie odpowiedniego typu danych dla indeksów tablicy. Inny typ może wymagać dodatkowych konwersji.

⁷ Unikaj zbędnych konwersji danych.

⁸ Deklarując dużą liczbę zmiennych uporządkucj ich deklaracje alfabetycznie.

⁹ Komentarz wstępny, to dłuższy komentarz do podprogramu zawierający między innymi opis co podprogram wykonuje, jak go wywoływać, co przekazują jego parametry formalne, jakie zmienne globalne odczytuje, jakie zmienne globalne zmienia, jakie wyjątki może zgłosić, jakie błędne sytuacje mogą wystąpić podczas jego wykonania.

¹⁰ Przewodnik to długi komentarz na początku bardzo długiego programu stanowiący jego spis treści.

¹¹ Dotyczy definiowania plików i rekordów w takich językach jak np. COBOL czy PL/1. Można podobną zasadę stosować i w innych językach. Dla przykładu, nazwy wszystkich strumieni standardowych w C zaczynają się od przedrostka std.

¹² Drogi czyli ścieżki obliczeń.

¹³ Dzisiejsze kompilatory nie tylko kontrolują składnię ale również starają się kontrolować poprawność semantyczną programu. Wykrywają np. niezainicjowanie zmiennych czy fragmenty programów, które nigdy nie będą wykonane. Kompilator clang potrafi nawet przeprowadzić analizę statyczną kodu (opcja --analyze).

Stacks Image 141

Bibliografia

  • Dennie Van Tassel. Praktyka programowania. Wydawnictwa Naukowo-Techniczne, Warszawa, 1982.