Jako inżynier oprogramowania, jak ważne jest czytanie kodu innej osoby?

25

Jestem początkującym inżynierem oprogramowania (obecnie student drugiego roku, kierunek CS) i naprawdę trudno mi zrozumieć programy innych ludzi. Chcę wiedzieć, czy ta umiejętność (lub jej brak) może być dla mnie przeszkodą, a jeśli tak, to jak ją rozwinąć?

James Bond
źródło
1
Czy czujesz, że rozumiesz kod, gdy jest ci również wyjaśniony, czy dopiero uczysz się metodą prób i błędów?
JeffO
1
Dlaczego ten otagowany „styl kodowania”? Czy masz problem z odczytaniem kodu, ponieważ jest on źle sformatowany? Umiejętność czytania kodu nie oznacza, że ​​potrzebujesz umiejętności rozumienia bardzo źle sformatowanego lub zaciemnionego kodu. Najpierw uruchom kod za pomocą narzędzia do formatowania.
Brandin
Wystarczy przeczytać dziś rano artykuł, który przypomniał mi to pytanie. Dlaczego praca nad Chrome zmusiła mnie do opracowania narzędzia do odczytu kodu źródłowego
Eric King,
To świetne pytanie! Miałem kolejne pytanie: jeśli pracujesz przede wszystkim nad własnym kodem (np. Jako programista naukowy w małym projekcie), jak znaleźć dobry kod do przeczytania? To zostało zadane wcześniej: softwareengineering.stackexchange.com/questions/69892/...
Gaurav

Odpowiedzi:

49

To jest istotne.

Sposób, w jaki go rozwijasz, polega na pisaniu własnego kodu (dużo) i tak, walcząc o czytanie kodu innych osób.

Problem polega oczywiście na tym, że nie wszyscy myślą w ten sposób. Dawno temu byłem na zajęciach z języka Java na pierwszym roku i przydzielono nam zadanie. W przeciwieństwie do tego, w co wierzyłem (że odpowiedzi będą zbieżne w przypadku trzech lub czterech wspólnych rozwiązań), wszyscy w klasie mieli unikalne rozwiązanie tego zadania.

Wynika z tego, że powinieneś czytać dobry kod.

Jest to jeden z powodów, dla których wzorce projektowe stały się tak popularne i dlatego powinieneś je przestudiować. Wzorce projektowe stanowią wspólne słownictwo dla programistów do komunikowania się i dostrojenia umysłu do „lepszych” sposobów rozwiązywania problemów obliczeniowych.

Powinieneś także przestudiować algorytmy i struktury danych.

Konsekwencją: Zawsze powinieneś starać się pisać kod, który inni programiści mogą łatwo zrozumieć.

Robert Harvey
źródło
7
Konsekwencją: Zacznij od
próby
4
Ogólnie dobra odpowiedź, z wyjątkiem części dotyczącej wzorów. Większość wzorców GoF (o czym ludzie myślą, kiedy używasz tego terminu) jest nadmiernie skonstruowana, zbyt drobnoziarnista, zdecydowanie zbyt skoncentrowana na OO lub po prostu anty-wzorce. A potem pojawiają się ludzie, pytając, które z tych wzorów powinni zastosować w swoim rozwiązaniu. Proszę, nigdy nie radzę deweloperom marnować czasu na wzory.
David Arno,
W przypadku małych problemów (powiedzmy odwróć liczby na liście) możliwe odpowiedzi powinny zbiegać się w niewielkiej liczbie możliwych rozwiązań. Dobre zadania powinny wymagać rozwiązania wielu takich problemów i uporządkowania rozwiązań tych problemów w taki sposób, aby całkowita liczba możliwych rozwiązań zadania rosła bardzo szybko.
Brandin,
15

To bardzo ważne.

Po ukończeniu studiów i wydostaniu się na świat większość projektów, nad którymi będziesz pracować, będzie już miała kod opracowany przez innych. Lucky jest programistą, który spędza cały swój czas na projektach typu greenfield!

Jest to umiejętność, którą nabywa się poprzez praktykę i cierpliwości, a w wielu przypadkach jest to umiejętność, którą wielu ludzi tak naprawdę nie dostać dużo okazji do pracy nad aż po skończeniu studiów i uzyskać pierwszą pracę. Zrelaksować się!

(chociaż jeśli twoja szkoła ma program współpracy, dałbyś ci doświadczenie przed ukończeniem szkoły w pracy nad dużymi projektami, które są w większości napisane przez innych ludzi ORAZ dostaniesz kredyty akademickie! Coś do zbadania, jeśli jest dostępne)

FrustratedWithFormsDesigner
źródło
7

To ważna umiejętność , w zależności od specyfiki miejsca pracy, może być nawet ważniejsza niż pisanie kodu.

Podobnie jak inne umiejętności, praktyka czyni mistrza! Spróbuj odczytać kod innego programisty, debugować go, a to, co pomaga mi osobiście, polega na refaktoryzacji lub ulepszeniu małych fragmentów kodu i rozwinięciu stamtąd.

RMalke
źródło
Pomocne
4

Istnieją różne umiejętności zarówno w czytaniu, jak i pisaniu kodu.

  • Jednym z nich jest składnia. Wiedza, jak wygląda deklaracja metody.
  • Drugi jest zamierzony. Wiedząc, dlaczego metoda istnieje i do czego służy.

Co do czytania a pisania. Tak, czytanie jest niezbędne.
Kilka maksym, które pomagają wielu z nas, to:

  • Kod jest odczytywany 10 razy (przynajmniej) za każdym razem, gdy jest zapisywany.
  • Ktoś czytający kod często… ja w przyszłości czyta kod.
  • Nie broniłbym swojego stylu kodu sprzed ponad 1 roku, od tego czasu został ulepszony.

DOBRZE. To wszystko świetnie. Teraz do tego, czego prawdopodobnie doświadczasz.

omg, ta cholernie ogromna baza kodu z dziesiątkami tysięcy linii kodu źródłowego i klasami, które mają setki linii długości z szalonymi zależnościami i za każdym razem, gdy próbuję podążać za czymś, muszę utrzymać 10 poziomów w głowie itp.
Brzmi znajomo ? Tak. Głęboki oddech. Zrelaksować się. To normalne. Z tego wykonane są systemy produkcyjne. Ludzie przeżywają (i kwitną) w tych pozornie niezrozumiałych sytuacjach, ponieważ:

  • testy (miejmy nadzieję) istnieją i pomagają również dokumentować system.
  • programiści łączą się w pary i często przynosi to ponad dwukrotność wyniku.
  • dobry programista potrafi mówić, że nie rozumie, dopóki tego nie zrozumie.
  • zmiany to często tylko jeden lub kilka wierszy kodu, które pomagają wyodrębnić to, co należy przetestować
  • podstawy kodu wymagają miesięcy, a nawet lat
Michael Durrant
źródło
I na koniec, dobrzy programiści piszą sensowne komunikaty zatwierdzania, dokonując zmian w źródłowych systemach kontroli wersji. (Zapraszam do dodania do odpowiedzi)
rwong
1

Większość tych odpowiedzi skupia się na znaczeniu czytania kodu dla samodoskonalenia. Z całego serca się z tym zgadzam i popieram.

Jest jeszcze jeden aspekt, na który należy uważać - nawet jeśli byłeś cudownym, który nie mógł skorzystać z czytania innych podejść (niemożliwe, ale ze względu na argumenty ...), nadal musisz wiedzieć, jak czytać kod z powodu koncepcja, która w zasadzie nie istnieje w środowisku uniwersyteckim: zdecydowana większość projektów branżowych to projekty typu brown field (tj. albo w ramach istniejącej bazy kodów, albo integrujące się z nią).

Konieczność odczytu kodu tylko po to, aby zrozumieć istniejącą bazę kodu i procesy, jest realna. Zawsze można zadać innym programistom pytania dotyczące kodu, ale może to zająć tylko tyle czasu. Ludzie odchodzą, zmieniają projekty lub czas po prostu mija. Szczegóły niskiego poziomu znikają z pamięci, a programiści stosują łatki. W pewnym momencie nie ma jednego źródła prawdy oprócz samego kodu.

Dobra higiena kodu, przewodniki po stylach, recenzje kodu i dokumentacja pomagają, ale w pewnym momencie kod jest źródłem prawdy o tym, co się dzieje, a jedynym sposobem na znalezienie odpowiedzi będzie znalezienie go samemu. Oprócz zastosowań w samorozwoju umiejętność czytania kodu jest wyraźnie odrębną umiejętnością od pisania.

Michał
źródło
0

Zrozumienie kodu innej osoby jest czymś, czego nie można uciec, ponieważ najprawdopodobniej będziesz pracować w zespole, nawet jeśli nie w zespole, będziesz wyszukiwać w Google różne rzeczy i będziesz musiał zrozumieć przykładowy kod. Więc tak, to konieczność.

Wydaje mi się, że każdy odczuwa, że ​​na początku uczucie to może być mniejsze niż inne, lepiej rozumiesz swój kod niż kod innych, ponieważ spędzasz znacznie więcej czasu z własnym kodem niż z kodem innej osoby, ponieważ nie tylko czytasz, ale piszesz i tworzysz strukturę to w twoim umyśle. Jeśli zaczniesz spędzać więcej czasu z kodem innej osoby i najpierw spróbujesz zobaczyć, jakiej struktury / przepływu używasz, z pewnością sprawi to, że lepiej zrozumiesz kod.

Aby mój punkt był jeszcze bardziej przekonujący, jeśli masz jakiś kod, który napisałeś rok temu, spróbuj go zrozumieć ponownie, a ja z całą pewnością będę wiedział, że poświęcisz więcej czasu, ale mniej niż kod innego, ponieważ masz pojęcie o tym, jak ustrukturyzujesz swój kod.

Mam nadzieję, że ta pomoc, nie zawiedź się, to zupełnie normalne. Poświęć więcej czasu na kod, a w końcu go zdobędziesz.

techExplorer
źródło
0

Właśnie dostałem projekt z około 100 000 wierszy kodu napisanego przez zespół z innego kraju i muszę wprowadzić kilka bardzo znaczących zmian w kopii ich kodu w ciągu najbliższych miesięcy, pozostawiając tyle samo kodu wspólne jak to możliwe.

Powiedz mi, jak mogę szybko wykonywać swoją pracę bez umiejętności czytania kodu innych osób. Jeśli nie umiesz czytać kodu innej osoby, utkniesz całkowicie.

gnasher729
źródło