Jaki jest najlepszy kod źródłowy C ++ do przeczytania dla początkującego? [Zamknięte]

25

Próbuję ulepszyć technikę kodowania c ++, czytając kod źródłowy c ++. Który projekt open source poleciłbyś? Czy kod bibliotek Boost C ++ jest dobry?

snieżny Lis
źródło
11
Po co zamykać głosy? Pytanie jest jasne i konkretne.
Nemanja Trifunovic
Wdrożenia STL
dukeofgaming
12
@dukeofgaming: zapomniałeś tagu „ironiczny”.
Doc Brown
1
Myślę, że kod źródłowy doładowania nie będzie dobrym pomysłem dla początkującego. Prawdopodobnie utopisz się w szablonach i technikach SFNINAE, których jeszcze nie rozumiesz i jakie są ich przyczyny.
Chris mówi Przywróć Monikę
7
Głosowanie jest bliskie, ponieważ pytanie to, choć konkretne, nie jest konstruktywne. Zaowocuje to po prostu listą wszystkich projektów, w których żadna odpowiedź nie może być „odpowiedzią”. Więcej informacji znajdziesz w FAQ .
Walter

Odpowiedzi:

27

Poleciłbym dowolny kod C ++ Google typu open source, taki jak:

Zalety korzystania z kodu Google:

  • Jest napisany zgodnie z wysokimi standardami i jest recenzowany (w przeciwieństwie do niektórych kodów open source).
  • Ma dobrą dokumentację dla programistów (co ułatwia wybranie i zrozumienie).
  • Wykorzystuje niektóre średnio zaawansowane techniki C ++ (a zatem jest dobre do nauki).
  • Prawdopodobnie jest to łatwiejsze do zrozumienia niż Boost, ponieważ nie opiera się tak bardzo na zaawansowanym metaprogramowaniu szablonów i metaprogramowaniu preprocesora i nie jest tak obciążone z powodu niezliczonych włamań do kompilatora i specjalnych przypadków.

Google C ++ Style Guide że Google C ++ zastosowania kod jest ogólnie dobry, ale ma pewne dość nietypowe bity (takich jak niektóre z ich wytycznymi nazywania ich wyjątkami zabronienie), więc należy pamiętać, że ich kod C ++ będą różnić się w tych aspektach z co zobaczysz w polu.

Josh Kelley
źródło
9

Nie polecałbym czytać bazy kodu. Polecam przeczytanie C ++ FAQS . Istnieje również doskonała książka, która pasuje do strony. Najlepszy sposób na poprawę umiejętności kodowania w C ++.

Onorio Catenacci
źródło
13
-1: Bardzo się nie zgadzam. Czytanie kodu innych ludzi jest bardzo ważną częścią doskonalenia umiejętności kodowania. Naprawianie błędów w tym kodzie jest jednak jeszcze lepsze.
Jan Hudec
6
@ Jan Pełna umowa ode mnie. Jednak większość kodu źródłowego C ++ jest do bani i wykorzystuje wszelkiego rodzaju złe wzorce, które uczyłyby złych technik. Czy znasz dobry projekt OSS, który może służyć jako lektura wprowadzająca?
Konrad Rudolph
Miałem na myśli tę: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/... ale widzę, że są też inne książki.
Onorio Catenacci
6

Czytanie istniejącego czystego kodu C ++ to świetny sposób na naukę języka.

Na przykład kod w zestawie narzędzi OpenFST jest bardzo czysty. Jest czytelny i wykorzystuje nieco zaawansowane funkcje bez przesadzania.

Z drugiej strony Boost może być nieco trudny do odczytania, częściowo dlatego, że używają trudnych do zrozumienia sztuczek C ++ oraz dlatego, że często posypują kod różnymi rozwiązaniami dla różnych wersji kompilatora.

użytkownik3287
źródło
6

Sugerowałbym przeczytanie „ Effective C ++ ” Scotta Meyersa i skorzystanie z sugestii, które ma w małych programach zabawkowych.

Sardathrion - Przywróć Monikę
źródło
2
Nie nauczysz się niczego na małych programach zabawkowych. Musisz pisać programy, które rozwiązują rzeczywiste problemy. Nie muszą być duże, nie poradzisz sobie z pisaniem dużych programów, ale nie mogą to być tylko zabawki.
Jan Hudec
@JHHec: To, co opisujesz, nazywam programami zabawkowymi : fragment kodu, który rozwiązuje pojedynczy problem. Na przykład algorytm Runge-Kutta byłby „programem zabawkowym”, podczas gdy pełna symulacja N-ciała nie byłaby.
Sardathrion - Przywróć Monikę
2
Oba są „programami zabawkowymi”. Ponieważ problemy są wymyślonymi przykładami problemu, chyba że wykonujesz symulacje numeryczne, a większość programistów tego nie robi. Rzeczywistym problemem jest coś, z czego ty lub ktoś, kogo znasz, rzeczywiście wykorzystasz. Prawdopodobnie będzie miał GUI lub przynajmniej raczej złożone parsowanie wiersza poleceń i manipulować plikami lub połączyć się z siecią i korzystać z niektórych istniejących bibliotek i nie będzie miał żadnych trywialnych algorytmów, ponieważ 99% programów tam nie ma.
Jan Hudec
1
@ JanHudec, czy mówisz, że dana osoba niczego się nie uczy, pracując najpierw z małymi, ograniczonymi problemami? Jeśli programiści wskoczą bezpośrednio w duże i skomplikowane problemy, nie ucząc się przynajmniej kilku podstawowych zasad i podstawowych idiomów językowych, w ten sposób otrzymujemy te ogromne aplikacje „Big Ball of Mud”.
Onorio Catenacci
3
Nie jestem pewien, czy to odpowiada na pytanie, ale każdy programista C ++ powinien przeczytać tę książkę (i jej kontynuacje)
Gort the Robot
2

Spróbuj przeczytać coś, co istnieje od lat i ma duży rozmiar. Zajmie to kilka miesięcy, aby zrozumieć kod i zrobić coś w nim.

Przychodzą na myśl Firefox, Thunderbird, OpenOffice.org, LibreOffice. Powinno też być o wiele więcej podobnych. Projekty te działają na wielu systemach operacyjnych i platformach sprzętowych. Muszą także ocenić czytelność. Mogą to być techniki, których szukasz.

vpit3833
źródło
0

Jeszcze lepiej niż czytanie kodu byłoby pracować z tym kodem w postaci naprawiania błędów i dodawania drobnych ulepszeń tu i tam. Wybierz jakiś program, najlepiej taki, którego używasz, zarejestruj się na liście mailingowej, zacznij przeglądać ich narzędzie do śledzenia błędów i spróbuj zdiagnozować niektóre błędy. Zapytaj na liście mailowej, czy znajdziesz rozwiązanie, czy jest to uzasadnione, czy utkniesz. To da ci określone cele podczas czytania kodu, zmusi cię do prawdziwego zrozumienia i to będziesz robił przez większość czasu w każdej pracy.

Być może możesz spojrzeć na jakąś aplikację KDE. Większość z nich jest napisana w C ++ i możesz zacząć od kilku mniejszych.

Jan Hudec
źródło
-3

Tak, kod bibliotek Boost C ++ jest świetnym źródłem do nauki, jeśli nie jednym z najlepszych na naszej planecie. Jednak dla początkującego uczenie się z kodu Boost może sprawić, że krzywa uczenia się będzie bardzo stroma. Jeśli naprawdę chcesz przeczytać Boost, zacznij od kilku małych i prostych bibliotek, takich jak Boost.Array .

mloskot
źródło
2
Wydaje mi się, że dobrym pomysłem na naukę jazdy na nartach jest kupowanie na stokach z podwójnym czarnym diamentem.
Gort the Robot
@ StevenBurnap, przeczytaj jeszcze raz moją odpowiedź i zwróć uwagę na tę absurdalną sugestię. Przestańcie to robić, wskażcie lepszą bibliotekę, którą warto przeczytać dla początkujących. Dochodzisz do wniosku, że najlepsze przykłady, które pasują początkującym, pochodzą z książki dla początkujących.
mloskot
-3

Spróbuj przeczytać plik C ++ PDF. Jest darmowy i nauczyłem się z niego języka C ++, mimo że nie miałem innych doświadczeń programistycznych i mam tylko 14 lat. Niesamowite.

Xi_Ensen
źródło
3
Czy możesz dodać link do niektórych zasobów związanych z tymi projektami?
Giorgio,
3
Co masz na myśli w C ++ PDF?
Martijn Pieters,