2009-06-12 9 views
9

G'day,Czy aktualizujesz stare komentarze do kodu, które są błędne?

Zainspirowany komentarzem zrobiłem w mojej odpowiedzi na this question na komentowanie Perl wyrażeń regularnych Zastanawiałem się, co następuje.

Podczas pracy nad starszym, starym, krwawym starożytnym kodem aktualizujesz komentarze, które nie są zsynchronizowane z kodem lub po prostu aktualizujesz kod i ignorujesz komentarze, które są już "oddalone o milę" od rzeczywistości obecnego kodu?

Podejrzewam, że w zasadzie podchodzę do rzeczy z syndromu "broken window"?

BWS zasadniczo mówi, że ludzie po prostu mówią "rzeczy to" i nie dbają o naprawianie błędów, które są tam, jeśli widzą, że ludzie, już zaangażowani w dany system, nie są wystarczająco zainteresowani, aby naprawić te rodzaje od rzeczy. Całkowicie wszechobecny umysł ustawia IMHO!

Chciałbym zobaczyć, co robią inni ludzie "na węglowej".

okrzyki,

+0

powinna być wspólnota wiki – SilentGhost

+0

Głosowałem, aby to zamknąć, ponieważ w ogóle nie rozumiem tego pytania. Jaka jest możliwa korzyść z pozostawienia komentarza w spokoju? Oczywiście wszyscy będą starali się je aktualizować. – mquander

+0

Zakładasz, że powodem, dla którego komentarze nie zostały naprawione, jest to, że osoby zaangażowane w system nie dbają o to, aby je naprawić. Twierdzę, że komentarze, które mają długowieczność, mogą istnieć z jakiegoś powodu - są na tyle znajome, że służą do poruszania się w pliku, a nie do wyjaśniania działania kodu. – Nosredna

Odpowiedz

21

Naprawdę naprawię złe komentarze.

Czasami wystarczy je usunąć, aby nie wprowadzały w błąd.

Lepiej, wolę zrestrukturyzować kod, więc komentarze nie są konieczne - samokreślenie kodu jest lepsze niż komentarze, ponieważ nie można uzyskać uzyskać nieaktualne.

+1

Ja po drugie opcja ich usuwania. Bezwzględnie usuwam skomentowane i poza tym nieużywany kod. –

+1

Trzecie. Nie komentowanie jest lepsze niż złe komentarze. Wystarczy jeden nowy wynajem, aby przyjść na to od nowa i naprawić niewłaściwego, aby naprawdę zepsuć głowę każdemu, bo wtedy kod pasuje do tego komentarza i wszystko wygląda na niezłe. – user60401

+1

Zgadzam się z tym, co mówisz. Uważam jednak, że autodokumentowanie kodu _can_ było nieaktualne. Nazwa metody i nazwy zmiennych może być też błędna kilka razy! – Sam

4

Zawsze staram się aktualizować je, jeśli mogę, albo przynajmniej dodać notatkę o tym, że może być źle. Jest to opłacalna inwestycja o niewielkiej ilości czasu.

Inną rzeczą, którą zawsze robię, to dodawanie wszelkich istotnych numerów błędów i jaki wpływ miały te zmiany - zawsze warto je zobaczyć.

+0

Generalnie powinieneś używać swojego systemu kontroli wersji do rejestrowania każdej poprawki błędów i związanych z nią zmian, które są z nią związane. Napraw jeden błąd, przetestuj, a następnie zatwierdź zmianę za pomocą komentarza commit, który zawiera numer błędu i tytuł. Pójdź, spłucz, powtórz. W ten sposób kod nie zostanie zapisany w historii zmian. Ale będzie kilka przypadków, w których trzeba połączyć aktywny kod z historią błędów w ramach dokumentacji. –

3

Jeśli komentarz jest niezbędny, zaktualizuję go, w przeciwnym razie spróbuję zmienić kod do punktu, w którym mogę po prostu skasować komentarz i pozwolić, aby sam kod był dokumentowany.

+2

'Brandon, głosował za intencją, ale wciąż nie jest pewien, czy gęsty kod może kiedykolwiek być "samoobsługowy" (-: –

+0

Nie mogę się z tym nie zgodzić, ale nie szkoda w próbie. :) – Brandon

+0

@Rob Wells - To lepiej usprawiedliwienie dla ustalenia kodu, a nie skorygowanie komentarza. – Nosredna

6

Niedawno zacząłem śledzić więcej z porad wuja Boba Clean Code i próbuję przekształcić komentarze w funkcje, które obejmują (wyodrębniają) skomentowany kod w funkcji, która jest co najmniej tak samo znacząca jak komentarz, który zastępuje.

+1

Yeap- Ograniczam komentarze do minimum. Samo-dokumentujący kod jest lepszy. – RichardOD

+2

Dokonywanie niepoprawnego komentarza> poprawianie złego komentarza> usuwanie złego komentarza> pozostawienie złego komentarza (>> pisanie nowego, gorszego komentarza!). –

1

Naprawię komentarze.

Dlaczego nie naprawić żadnego problemu? Jeśli znasz kod, nad którym pracujesz, komentarze powinny być najłatwiejszymi poprawkami. Oczywiście, jeśli zadałeś sobie trud, aby do niego zagłębić się, kod powinien być lepszy, niż go znalazłeś.

Mogę nawet założyć, że w grupach, w których wiele osób będzie dotykało kodu, komentarze mogą być uważane za tak samo ważne jak sam kod. Bez tego komunikacja pomysłów jest zepsuta.

W praktyce prawdopodobnie nie komentuję tak dobrze, jak powinienem. Trudno jest przyznać, że ty lub ktoś inny prawdopodobnie będzie się później kręcił w twoim "arcydziele".

1

Jeśli twoja dokumentacja jest generowana z komentarzy (gorąco to polecam), to tak, staram się, aby komentarze były skrupulatnie synchronizowane z kodem.

1

Natychmiast naprawię komentarze, jeśli widzę problem i prawdopodobnie zanotuję, co trzeba by poprawić kod.

Jeśli dostanę wtedy autobus, kod jest tym lepszy, jeśli chodzi o moją szybką, ostroŜną uwagę.

Później, jeśli będę mieć czas, skończę sam kod (naprawianie go wymaga zwykle czasochłonnego testowania regresji). Jeśli nie, zostawię to na inny dzień, ale przynajmniej będę wiedział, co to jest problem, kiedy mam czas, aby do niego wrócić.

1

Komentarze są naprawdę przydatne do informowania przyszłych opiekunów lub programistów o tym, co robi kod lub dlaczego robi to w ten sposób.

Jeśli zmienisz kod bez aktualizacji komentarzy, w najlepszym razie będzie to mylące, jeśli nie wręcz wprowadzające w błąd.

+1

@andy, całkowicie zgadzam się z tobą w teorii. Kłopot w tym, że dostaniesz niedbałego inżyniera Ops, który już od trzech rano budzi się od trzech alertów, aktualizując komentarze i skojarzony kod! Wszyscy jesteśmy człowiekiem! (-: –

+0

Bardzo dobrze, Rob. "Teoretycznie teoria i praktyka to to samo." W praktyce dobrze będzie mieć kod, który działa z dowolną formą komentarza: – Andy

1

Staram się przestrzegać zasady harcerza i pozostawić kod czystszy, niż go znalazłem. Postaram się zaktualizować komentarz lub zreorganizować kod, aby uniknąć potrzeby komentowania. Uważam, że generalnie lepiej jest nie komentować, niż mieć niepoprawny komentarz.

1

Jeśli projekt znajduje się pod kontrolą wersji (i powinno to być w dzisiejszych czasach, ale nigdy nie wiadomo) i jest ogromna porcja nieaktualnych komentarzy, usuwam przystawkę i pozostawiam nowy komentarz, że "usunąłem garść starych komentarzy, które już nie wydawały się pouczające, i przesyłam z uwagą, że usunąłem nieaktualne komentarze.

W końcu usunę komentarz, który wspomina o usunięciu lub zastąpi go komentarzami, które dotyczą nowego kodu.


Jednak oto Minusem zmieniając stare, podobno bezsensowne komentarze w systemie, który jest utrzymywany przez grupę programistów:

Uwagi nie działają już jako komentarze! Działają one jako punkty orientacyjne dla programistów znających kod. Są to znaczące komentarze w przeciwieństwie do komentarzy wyjaśniających.

Programiści mogą rzeczywiście wyszukiwać słowa kluczowe w komentarzach orientacyjnych, aby nawigować po pliku.

Po usunięciu komentarzy dotyczących punktów orientacyjnych lub nawet ich zmianie można drastycznie spowolnić programistów, którzy używają ich do nawigacji w pliku. Denerwujesz się mentalnymi mapami ludzi, którzy mają długotrwały związek z kodem, i zadasz więcej obrażeń niż pożytku. Mózg to zabawna rzecz. Znacznie łatwiej jest zapamiętać słowo lub frazę za pomocą funkowego komentarza niż nazwa metody.

Wydaje mi się, że jeśli komentarze są niepoprawnie nieaktualne z kodem, powinieneś się dowiedzieć dlaczego. Wydaje się niewiarygodnie przypuszczać, że inni programiści nie dbają o kod. Może tak, może nie. Jeśli przejmujesz pliki od faceta, który odszedł, a masz wyraźne prawo własności, zagraj! Jeśli jesteś nowym facetem wśród grona facetów, którzy pracują nad kodem od 20 lat, a są jeszcze inne dowody na to, że oni się martwią o kod, być może czegoś brakuje.

Jest to podobne do ponownego formatowania - zmiana odstępów, zmiana miejsca, w którym otwierają się nawiasy klamrowe itp. I wiele zależy od własności.Czy będziesz w aktach 20 razy więcej niż facet obok ciebie? Lub 1/20 tak często? Jeśli to drugie, czy naprawdę chcesz go zdezorientować?

Upewnij się, że to nie jest to, co robisz, a jutro możesz usłyszeć, jak ktoś krzyczy: "Gdzie do cholery jest ta funkcja?"

+0

@Nosredna, całkowicie się zgadzam. Jestem tak sfrustrowany ludźmi, którzy przypisują kod do systemu SCM po dodaniu nowych linii i komentowaniu istniejących linii na wszelki wypadek! 8-O –

2

kiedy znajdę bezużytecznych komentarzy GhostDoc generowane, czasami po prostu usunąć je:

Jaki jest cel tych komentarzy?

/// <summary> 
/// Saves the form properties. 
/// </summary> 
/// <param name="form">The form.</param> 
/// <param name="propertyNames">The property names.</param> 
void SaveFormProperties(Form form, string[] propertyNames); 
+0

@Rauhotz, całkowicie zgadzam się, jeśli jesteś pewien, że nie jest już potrzebny, np. migracja do DocGen –

+0

To więcej o bezużytecznych komentarzach, które nie dostarczają dodatkowych informacji, takich jak "i ++; // inkrety i" – Rauhotz

+0

@Rauhotz, Całkowicie! Możesz uzyskać chichot z mojej odpowiedzi na to pytanie

-1

Nie naprawiam złych komentarzy. Po prostu je usuwam. (Lub zastąp je pojedynczym myślnikiem jako komentarzem). Ogólnie terminy są blisko, więc mógłbym poświęcić sekundę, aby wybrać, a następnie usunąć zły komentarz, ale spędzanie 30 sekund lub dłużej na przepisanie byłoby stratą czasu . (I marnowanie twojej koncentracji). Kiedy mija termin, sytuacja staje się jeszcze bardziej zrelaksowana, w tym momencie nadszedł czas na ogólną weryfikację kodu, aby przywrócić kilka nowych komentarzy.

Ale najpierw trzeba najpierw zauważyć złe komentarze. W większości przypadków takie stare pliki kodu są często używane bez dokładnego sprawdzania. I często już udowodnili, że działa, więc dlaczego miałbym nawet spojrzeć na komentarze?

1

Naprawię komentarze. Widziałem, że niektóre odpowiedzi mówiły, że przepisałby kod, gdyby komentarze były nieaktualne. Wydaje mi się absurdem przepisanie działającego kodu tylko dlatego, że komentarze są złe. Takie zachowanie może cię nawet zwolnić, jeśli twoja praca jest wystarczająco ważna.

+0

Nie widziałem nikogo, kto by napisał przepis na kod, jeśli komentarze są złe. Powiedziałem, że jeśli kod jest gęsty, to jest lepszy argument dla refaktoryzacji kodu, zamiast przepisywania komentarzy, ale nie powiedziałem, że powinieneś to zrobić. Jednak ci z obozu Extreme Programming mówią: "Bezlitośnie refaktoryzujcie, dla nich poprawianie kodu nieubłaganie jest częścią pracy programisty – Nosredna

+0

Chadwick i Brandon unikali ponownego pisania kodu (refaktora). – user122302

2

Jako dość świeży programista, nie pracuję zbyt wiele nad starszym kodem, ale staram się wracać co jakiś czas, aby moje własne komentarze były delikatnie zbliżone do prawdy. Nie ma sensu zostawiać komentarzy, które nie opisują prawidłowo funkcji kodu.

To oznacza, że ​​jeśli się spieszysz, nie ma sensu tracić czasu na aktualizowanie komentarzy. Dodanie jednego do efektu "To jest nieaktualne" rozwiązuje problem zachowania nawigacji bez pozostawienia niejasnego co do dokładności.

1

Zawsze poprawiam komentarze - przede wszystkim dlatego, że zazwyczaj jestem tym, który pracuje na kawałku kodu. To może być dla mnie coś podobnego do OCD, ale po prostu lubię kod, nad którym pracuję, aby wyglądać ładnie - dobre nazwy zmiennych, formatowanie (nie jest to problem ze współczesnymi IDE) i komentarze.

Nie wierzę, że kod może być "refaktoryzowany do punktu, który sam się dokumentuje". Może być refaktoryzowany do punktu, w którym potrzebne są tylko komentarze dotyczące funkcji, procedur, zmiennych składowych, klas itp., Ponieważ każde wywołanie funkcji ma tylko 1-5 linii. Pochodzę z tła Lispa lubię programować poprzez dekompozycję - o wiele prostsze, testowalne i łatwiejsze do udowodnienia.

Powiązane problemy