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. |
|
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ć. |
|
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 .... :-) |
|
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 |
|
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ą. :-) |
|
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: { std::merge( vector.cbegin(), vector.cend(), deque.cbegin(), deque.cend(), std::ostream_iterator < int >( std::cout, " " ) ); }
|
|
« 1 » |