ZPR-podstawowe rady:
- To, że program działa to tylko początek. Program powinien być napisany zgodnie z obowiązującym paradygmatem, z użyciem dobrej praktyki programistycznej wpajanej na wykładzie.
- Pamięć zaalokowana musi być zwolniona w realizowanym programie.
- Kod destruktora potrzebny jest tylko jeśli alokowano zasoby.
- Dla nietrywialnych klas koniecznie trzeba zaimplementować (lub ukryć) konstruktor kopiujący i operator przypisania.
- Dane typów niewbudowanych, jeżeli się tylko da, przekazujemy przez 'const&'
- Wszędzie gdzie się tylko da dodajemy kwalifikator 'const'
- Preferujemy preinkrementację.
- Unikamy dynamicznej alokacji pamięci.
- Jeżeli w danym zastosowaniu istnieje przyjęty zwyczaj, to używamy powszechnie przyjętych nazw, np. jeżeli tworzymy własną implementację kontenera, to powinno się go używać tak, jak kontenera standardowego, np. powinna istnieć metoda 'push_back', a nie metoda 'dodajNaKoniec'.
- Większość kodu, który Państwo piszą to kod usługowy, który powinien wykonywać pewne zadania, zwracając wynik. Komunikacja z użytkownikiem powinna odbywać się w jednym, dobrze wyodrębnionym miejscu, np. w ciele funkcji 'main()'. Przykład: implementujemy kontener, a w nim metodę 'find'. Nie powinna ona wypisywać czy znalazła i co, tylko powinna zwrócić ,,coś'', dzięki czemu dowiemy się czy wyszukiwanie powiodło się.
- Należy zauważać istnienie klas bardziej ogólnych niż implementowana, tj. jeżeli z analizy zadania wyszło, że musi istnieć klasa 'Student', to tworzymy również klasę 'Osoba', po której 'Student' dziedziczy.
- Kod powinien być samokomentowalny. Obowiązuje podział kodu na moduły.
- Tworzymy kod przenośny, zgodny ze standardem ISO. C++ wraz z biblioteką standardową znacznie zmienił się od lat dziewięćdziesiątych. Tworząc oprogramowania należy używać najnowszego standardu języka, który jest powszechnie obsługiwany. Dla g++ w Ubuntu 22.04 domyślnym standardem jest c++17.
- W kodzie programu nie wolno używać "magicznych" stałych, w stylu: "y=x-19*x;" - tu "19" to "magiczna" stała. Zamiast niej należy użyć stałej nazwanej, np. "const int PR_PODATKU = 19; y=x-PR_PODATKU*x;"
- Preprocesora można używać tylko do: warunkowej kompilacji, dołączania plików nagłówkowych.