Krótki artykuł z poradami napisany po 22 latach programowania w C++

0

Sztuka kodowania w C++ jest dostępna w repo:
https://gitlab.com/energokoder/sztuka-kodowania

8

Jak chcesz programować dobre, prawdziwe i profesjonalne aplikacje, to wybór jest tylko jeden: C++.

o cię kiciuś :)

15

Przeczytałem, mam mocno ambiwalentne odczucia. Z częścią (większością?) rad można się zgodzić, ale część brzmi jak bezmyślna aplikacja wzorców wszędzie gdzie tylko się da lub próba narzucenia bezsensownych rozwiązań, bo np. twórca nie wiedział że da się inaczej.

Po lekturze rzuciło mi się w oczy przede wszystkim:

  • plik .odt zapisany w repozytorium zamiast jakiegoś sensowniejszego formatu (pdf? markdown? wymaganie pakietu biurowego to lekka przesada imo)
  • nigdy nie używaj struct
  • nigdy nie używaj private w klasach bibliotecznych
  • wszystkie destruktory powinny być wirtualne
  • notacja węgierska (wtf)
  • zmienne globalne to zło, ale singletony już ok
  • linkuj statycznie bo inaczej nie da się debugować (przyp. kq: da się)
  • nie ucz się innych języków programowania
  • uzależnienie od konkretnych rozwiązań (cmake, snap, Qt)
  • dokument jest połączeniem coding style guide z ogólnymi zasadami programistycznymi. O ile te ogólne zasady są z reguły sensowne, to z perspektywy C++ słabo to wygląda.
  • twardy limit na wielkość funkcji. Sorry, czasem się nie da i podział funkcji spowoduje wyłącznie zaciemnienie jej działania.
  • Kod C++ należy umieszczać w plikach *.h++ i *.c++, a nie w żadnych innych!Wynika to z tego, że przykładowo: pliki .h i .cpp to nie jest symbolika C++! wtf
0

I nie daj się nabrać, tym co gadają teksty w stylu: W Jawie wyświetlenie filmu zajmuje 1 linijkę kodu. Bo tylko frajerzy tak mówią: bo myślący programista wie, że to tylko kwestia bibliotek, a nie języka.

Pffff!

8
revcorey napisał(a):

Jak chcesz programować dobre, prawdziwe i profesjonalne aplikacje, to wybór jest tylko jeden: C++.

o cię kiciuś :)

Tu jest trochę więcej perełek:

  1. Jak chcesz być dobry w C++ to programuj w jego stylu we wszystkich jeżykach w jakich jesteś zmuszony programować. Wtedy utrzymasz „zdrowe nawyki” programowania w C++.

  2. Rzeczą trochę nienormalną jest wiele języków narodowych. Ma to jedynie uzasadnienie symboliczne (rozdział symboliczny poszczególnych narodów, tak by miały szansę na indywidualny sukces).

I chyba moja ulubiona:

  1. Jak programujesz indywidualnie lub w małym zespole w C++, to jedyną szansą na powodzenie projektu jest biblioteka Qt.
2

• 1, 2 i 3 linijkowe funkcje są nie do przyjęcia.
Jest to chory zwyczaj zapoczątkowany przez j. Java i praktykowany przez j. skryptowe. Jednak poza tym, że jest to trudne do zrozumienia, to jeszcze jest niewydajne, bo każde wywołanie f. jest b. kosztowne.

kurcze, wywalili z C++ inline ?

C++ jest dużo mniej podatny na zmiany ze względu na hierarchię klas.

kurcze myślałam ze jest odwrotnie

i dlaczego ten dokument jest po polsku? przecież jest nim napisane żeby pisać po angielsku

0

a.png

:/

4

• 1, 2 i 3 linijkowe funkcje są nie do przyjęcia.
Jest to chory zwyczaj zapoczątkowany przez j. Java i praktykowany przez j. skryptowe. Jednak poza tym, że jest to trudne do zrozumienia, to jeszcze jest niewydajne, bo każde wywołanie f. jest b. kosztowne.

Zaczynam rozumieć, dlaczego akurat w kodzie C++ znajdowałem kwiatki pokroju klas na 45k linii, metod na 1,5k linii, turbo-enumów na paręset i towarzyszących im, nie mniejszych switchy

1
superdurszlak napisał(a):

• 1, 2 i 3 linijkowe funkcje są nie do przyjęcia.
Jest to chory zwyczaj zapoczątkowany przez j. Java i praktykowany przez j. skryptowe. Jednak poza tym, że jest to trudne do zrozumienia, to jeszcze jest niewydajne, bo każde wywołanie f. jest b. kosztowne.

Zaczynam rozumieć, dlaczego akurat w kodzie C++ znajdowałem kwiatki pokroju klas na 45k linii, metod na 1,5k linii, turbo-enumów na paręset i towarzyszących im, nie mniejszych switchy

Dobry kompilator powinien takie krótkie funkcje zoptymalizować. Ale nie wiem czy obecnie są dla C++ są jakieś dobre kompilatory.
Jak coś to z tego co pamiętam można kompilatorowi pomóc gdzie się da, przez użycie inline.

Generalnie nie skreślałbym niczego z góry (no może poza javą...). Wszędzie są tradeoffy. W C/C++ na pewno warto z tym uważać. W Ruby z przyjemnością piszę takie krótkie metody i wydajność mam gdzieś.

2

Do autora, jak chcesz zobaczyć jak naprawde takie dokumenty powinny wyglądać cyz co tam powinno być zacznij od:
https://github.com/lefticus
szczególnie
https://github.com/lefticus/cppbestpractices

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0