Gdzie idziesz czytać dobre przykłady kodu źródłowego? [Zamknięte]


53

Słyszałem, jak kilka osób mówi, że jednym z najlepszych sposobów poprawy umiejętności kodowania jest czytanie innych kodów i ich rozumienie. Moje pytanie, jako stosunkowo nowego programisty, gdzie mogę znaleźć dobre przykłady kodu źródłowego, które nie są zbyt daleko od mojej głowy?



3
Patrzę tylko na swój stary kod.
Paul

Paul, to nie pomoże OP, prawda? Oczywiście nie mają już dobrego kodu napisanego w przeszłości. do licha.
śmieciowe

2
@ junky, mam nadzieję, że mają jednak poczucie humoru :)
Konrad Morawski

to pytanie chciałem zadać, ale mam szczęście, że je znalazłem. myślałem, że to tylko mój problem, że nie wiem, gdzie znaleźć kody
Dhananjay

Odpowiedzi:


30

Możesz przeglądać projekty open source w witrynach repozytoriów, takich jak GitHub , Codeplex , Google Code lub BitBucket . Znajdziesz projekty o różnych poziomach złożoności, więc powinieneś być w stanie znaleźć coś, co zarówno cię interesuje, ale na początku nie przesadza.

Inną opcją są cotygodniowe posty na blogu Scotta Hanselmana .

Polecam zacząć od ustalonego, aktywnego projektu, aby zmniejszyć szanse na rozpoczęcie czytania kodu, który nie był jeszcze używany i kontrolowany. Idealnie znajdź coś, co Cię interesuje i z którego możesz skorzystać. Korzystanie z aplikacji pomoże ci zrozumieć kod źródłowy. Kolejną zaletą wyboru projektu typu open source jest to, że możesz wprowadzić poprawki lub funkcje, które pomogą uczynić czytanie kodu bardziej interesującym.

Wpatrywanie się w czyjś kod może być zastraszające, więc zacznij od mainfunkcji (lub jej odpowiednika) i przejdź dalej.


3
-1: początkujący nie umie odróżnić dobrego od złego kodu, więc „przeglądanie” projektów nie pomoże. W pewnym sensie opisałeś to, polecając „ustalone” projekty, ale widziałem okropny kod w projektach, o których wszyscy słyszeliśmy. Nie mam jednak lepszej odpowiedzi. To w rzeczywistości trudne pytanie, wymagające odpowiedzi dostosowanej do poziomu umiejętności, zainteresowań i przefiltrowanej przez wiedzę mentora.
Cris,

1
@Cris Nie zgadzam się, ale zauważę, że z czytania złego kodu można się wiele nauczyć. Prawdopodobnie czytanie i śledzenie złego kodu jest jeszcze trudniejsze niż nurkowanie w odpowiednio zorganizowanym projekcie. (I to jest zanim zaczniemy próbować dowiedzieć się, co to jest „dobry” kod. :))
Adam Lear

1
prawda. Ale dla większości z nas nie-geniuszy samokształcenie ma ograniczenia. Większość początkujących (we wszystkich dziedzinach) potrzebuje kontaktu z „dobrem”, aby poczuć, co jest dobre. A „Internet” to motto świata „Jestem dobry!”, Co nie pomaga.
Cris,

10

Bardzo niewiele osób pisze za pierwszym razem dobry kod źródłowy. Dobry kod źródłowy jest często tworzony przez serię poprawek. Tak więc, jeśli możesz znaleźć kod źródłowy, który został wielokrotnie sprawdzony i wielokrotnie naprawiony, prawdopodobnie jesteś w lepszej lokalizacji. Niektóre projekty open source (i niektóre z nich) są szczególnie dobrze ocenione. Kod pochodzący od firm, które mają obowiązkowe cykle przeglądu (np. Google, ale istnieje wiele innych), może pasować do rachunku.

Biorąc to pod uwagę, nie jestem pewien, czy Twoim celem powinno być znalezienie „świetnego kodu”. Należy spojrzeć na różne style kodu (takie jak te napisane przez twoich współpracowników) i nauczyć się rozpoznawać dobre i złe strony na ten temat. Im więcej złych punktów zidentyfikujesz, tym bardziej będziesz starał się ulepszyć swój kod i wiedzieć, jak to zrobić.

W szczególności uważam, że bardzo dobrym podejściem do uzyskania poczucia dobrego kodu jest użycie interaktywnego debugera do śledzenia złożonego kodu, zgodnie z łańcuchami wywołań. Na przykład przejdź do jednego z głównych plików swojej firmy, ustaw punkt przerwania i zacznij z nich wymyślać.

Po kilku zdezorientowaniu przez funkcje 100-liniowe z dziesięcioma poziomami wcięć i zależnościami od globałów, i kilka razy, gdy przeglądasz dobrze rozłożony kod, ulepszysz swoje własne oprogramowanie.


4

Zamiast znajdować świetne kody, zajrzyj do ogólnych książek programistycznych.

np. Kod zakończony, Pisanie solidnego kodu, Wzory projektowe (jestem pewien, że jest wiele innych książek w innym pytaniu i odpowiedzi na tej stronie)

Te książki opisują filozofię uważaną za dobry kod. Czytelność, wydajność, łatwość konserwacji, wykrywanie błędów itp.

Który służy jeszcze lepszym zasobom i jest bardziej wydajny niż próba ustalenia, co autor stara się osiągnąć.

Ps Good Design Software to także to, na co powinieneś zwrócić uwagę. Trudno byłoby go rozpoznać wyłącznie na podstawie obserwacji kodów, biorąc pod uwagę, że projekt jest wystarczająco duży.


1
Chciałbym wymienić „Clean Code” jako dobry zasób.
mrs

3

Przekonałem się, że kod bibliotek dostarczanych z wybranym językiem programowania jest często dobrym początkiem, aby zobaczyć najlepsze praktyki i dobry styl kodowania.

Chociaż nie chcesz zaczynać od miejsc takich jak algorytmy sortowania lub złożone klasy kontenerów.

Innym miejscem na ciekawe spostrzeżenia w pisaniu kodu jest Project Euler ( http://projecteuler.net/ ). Nieznaczna wada: Musisz rozwiązać problem, aby uzyskać dostęp do forum, na którym inni opublikowali swoje rozwiązania (ciekawe wyzwania dla wszystkich poziomów doświadczenia). Ale kiedy to zrobisz, znajdziesz przykłady dla prawie wszystkich głównych języków programowania. A ponieważ problem został już rozwiązany, pomoże ci zrozumieć kod innych ludzi, a także zobaczysz kod języków, których jeszcze nie znasz, ale mogą być interesujące.


3

Bardzo podobało mi się czytanie Beautiful Code . Ma krótkie, ale bardzo ładne przykłady kodu ze szczegółowymi objaśnieniami.

... czołowi informatycy oferują studia przypadków, które pokazują, jak znaleźli niezwykłe, starannie zaprojektowane rozwiązania dla głośnych projektów. Będziesz mógł spojrzeć przez ramię głównym ekspertom w dziedzinie kodowania i projektowania, aby zobaczyć problemy oczami.

... Autorzy myślą na głos, przeglądając architekturę swojego projektu, kompromisy dokonane w jego konstrukcji i kiedy ważne było łamanie zasad.

Ta książka zawiera 33 rozdziały napisane przez Briana Kernighana, KarlFogela, Jona Bentleya, Tima Braya, Elliotte Rusty Harold, Michaela Feathersa, Alberto Savoia, Charlesa Petzolda, Douglasa Crockforda, Henry'ego S. Warrena, Jr., Ashisha Gulhatiego, Lincolna Steina, Jima Kenta , Jack Dongarra i Piotr Łuszczek, Adam Kolawa, Greg Kroah-Hartman, Diomidis Spinellis, Andrew Kuchling, Travis E. Oliphant, Ronald Mak, Rogerio Atem de Carvalho i Rafael Monnerat, Bryan Cantrill, Jeff Dean i Sanjay Ghemawat, Simon Peyton Jones, Kent Dybvig, Otte i Douglas C. Schmidt, AndrewPatzer, Andreas Zeller, Yukihiro Matsumoto, Arun Mehta, TV Raman, Laura Wingerd i Christopher Seiwald oraz Brian Hayes ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.