Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pisanie uporządkowanego i przejrzystego kodu.

Ostatnio zmodyfikowano 2016-03-07 18:47
Autor Wiadomość
givrox7
Temat założony przez niniejszego użytkownika
Pisanie uporządkowanego i przejrzystego kodu.
» 2016-03-06 21:46:04
C++ jest językiem obiektowo orientowanym, co umożliwia lepszą organizację w kodzie i szybsze jego pisanie. Nie wiem jednak, jak powinienem używać klas, funkcji itp. Aby mój kod był faktycznie przejrzysty. Proszę o jakieś porady związane z organizacją kodu.
P-145646
carlosmay
» 2016-03-06 23:12:03
Nie wiem jednak, jak powinienem używać klas, funkcji itp. Aby mój kod był faktycznie przejrzysty.
Odpowiednie formatowanie tekstu (wcięcia, odstępy).
Odpowiednie nazewnictwo zmiennych, składowych, typów własnych (np. notacja węgierska).
Nie zmieniać sposobu formatowania i nazewnictwa w obrębie programu (najlepiej przyzwyczaić się do jednego i go nie zmieniać).
Programować.
P-145651
mokrowski
» 2016-03-07 10:39:12
Dodatkowo następujące reguły (reguła oznacza że są sytuacje gdzie postępuje się inaczej):
1. Przyjąć regułę że funkcja w swoim przebiegu dokumentuje logikę programu (tj. np. main() to wyłącznie wywołania funkcji w stylu: input_data(), caclucate(), show_result() a nie pętle i grupa if'ów).
2. W miarę możliwości klasy umieszczone w oddzielnych plikach *.hpp/*.cpp z utrzymaniem konwencji nazewniczej związanej z klasą (tj. np. konwencja...  klasa CalculateAverage a plik calculate_average.cpp). Konwencji trzymać się w całym programie.
3. Zapoznać się z nagłówkiem <algorithm>. Przy prawidłowym stosowaniu algorytmy ograniczają stosowanie "gołych forów/while".
4. Co do zasady, hermetyzować klasę. Atrybutów publicznych powinno nie być.
5. Stosować inteligentne wskaźniki Powoduje to usunięcie new i delete z kodu i bezpieczne zarządzanie zasobami.
6. Preferować stosowanie referencji ponad wskaźnikami (tu mi zęby zgrzytają jak przypomina mi się edukacja którą otrzymałem na studiach i jak widzę nic się nie zmieniło).
9 Stosować przygotowane w bibliotece standardowej kontenery a nie tablice lub co gorsza "gołe wskaźniki'.
10. Stosować nowoczesne konstrukcje języka C++11 i nowsze (na miłość boską jest 2016!)
11. Nauczyć się i stosować szablony. Potęga C++ objawia się mocno na etapie ich stosowania.
12. Po napisaniu kodu, podjąć refleksję ile % z kodu który napisałeś jest gotowa do ponownego użycia. Dążyć (powoli) np. z poziomu 30% do 80%. Jeśli 0, "źle się dzieje w państwie duńskim".
13. (żeby było śmieszniej pominę).
14. Czytelność i klarowność algorytmu jest najważniejsza.
15. "W 97% przypadków nie powinniśmy przejmować się wydajnością: przedwczesna optymalizacja jest źródłem wszelkiego zła."- Donald Knuth ... facet wie co mówi.
16. Biegły programista to biegły rzemieślnik. Jeśli nikt inny nie może na podstawie twojego kodu tworzyć... nie wykonałeś dobrze pracy :-/
17. DRY (ang. Don't Repeat Yourself) oraz KISS (ang. Keep It Simple, Stupid) to coś co powinno przyświecać nie tylko przy programowaniu..

Tyle tak na szybko .... :-)
P-145656
DejaVu
» 2016-03-07 11:52:06
Popatrz sobie na standardy stosowane przy wytwarzaniu biblioteki SFML. Popatrz sobie jak jest zaimplementowany kod i sam oceń czy:
- kod jest czytelny
- zmienne nazywają się sensownie
- metody i funkcje są logicznie ponazywane
- jest śladowa dokumentacja do tego co robi funkcja/metoda
- czy używanie biblioteki wygląda na łatwe
P-145661
givrox7
Temat założony przez niniejszego użytkownika
» 2016-03-07 17:17:00
@carlosmay, myślę, że notacja węgierska jest warta uwagi, a co do formatowania, to od tego mam Visual'a :-)
@mokrowski:
 Ad.1 Do tego się dotąd nie stosowałem.
 Ad.3 Wkrótce się zapoznam.
 Ad.5 Przez moje niewielkie doświadczenie, nie za bardzo wiem, o co chodzi z tymi wskaźnikami. :-(
 Ad.9 Przeczytam sobie o tych kontenerach. :-)
 Ad.15 Zawsze robiłem zupełnie na odwrót. XD
Tak w ogóle, to zaskoczyłeś mnie ilością, i przydatnością.
@DejaVu, przeglądnę, akurat mam pobraną. :-)
P-145668
carlosmay
» 2016-03-07 18:47:07
a co do formatowania, to od tego mam Visual'a :-)
Program sam robi wcięcia, i to fajnie.
Jednak można jeszcze pisać np. w nowej linii pogrupowane argumenty funkcji, np:
C/C++
{ std::merge( // funkcja scalaj
    vector.cbegin(), vector.cend(), // zakres 1
    deque.cbegin(), deque.cend(), // zakres 2
    std::ostream_iterator < int >( std::cout, " " ) // wyswietl
    );
}
P-145673
« 1 »
  Strona 1 z 1