Ilekroć dowiaduję się, że duża część mojego kodu musi zostać zmieniona, albo dlatego, że jest niepoprawna, albo dlatego, że musi zostać dostosowana do poważnych zmian architektonicznych spowodowanych innymi przyczynami, zazwyczaj tak robię:
- Komentuję cały kod, który, jak podejrzewam, może będę musiał zmienić. Skomentowany kod traktuję jako rodzaj mojej listy TODO.
- Stopniowo przeglądam skomentowany kod i odkomentuję części tego kodu, lub kopiuję i wklejam go w innym miejscu, a następnie edytuję je w razie potrzeby lub przepisuję części tego kodu od zera, patrząc na skomentowany kod w celach informacyjnych. Ilekroć myślę, że skończyłem z częścią skomentowanego kodu, usuwam go.
- Kontynuuję to, dopóki nie zobaczę więcej skomentowanego kodu.
Powinienem zauważyć, że w dużej mierze robię to w ramach osobistego projektu, który rozwijam sam.
Powiedziano mi jednak, że powinienem przestać to robić. Powiedziano mi, że zamiast tego powinienem zacząć używać git, odwołując się do starych commits, aby zobaczyć stary kod, zamiast pozostawiać kod z komentarzem. Powiedziano mi:
Komentowanie kodu to zły nawyk, który należy usunąć. Brakuje Ci doświadczenia, więc tego nie rozumiesz. Jeśli za kilka lat zobaczysz kod innej osoby, która lubi komentować kod, sam zaczniesz przeklinać tę osobę. Ilekroć widzę skomentowany kod, usuwam go w całości, nawet na niego nie patrząc, ponieważ zwykle taki kod jest całkowicie bezwartościowy. Z pewnością nie dostrzeżesz wad komentowania kodu w małych, jednoosobowych projektach; ale jeśli znajdziesz pracę i utrzymasz ten nawyk, będzie to wstyd.
Czy mogę zapytać, jakie są wady tego, co robię, czego teraz nie widzę?
Muszę powiedzieć, że tak naprawdę nie lubię tylko używać git, aby zobaczyć poprzedni kod. Jak powiedziałem, komentowanie kodu traktuję jako rodzaj listy rzeczy do zrobienia; podczas gdy git pokaże mi, jak kiedyś wyglądał kod, nie powie jasno, które części kodu należy jeszcze przejrzeć, a które już wykonano. Obawiam się, że mogę przegapić część kodu i wprowadzić błędy.
Dla kompletności uważam, że powinienem dodać, że osoba, którą cytuję, jest doświadczonym programistą i fanem „Clean Code” wuja Boba - a wujek Bob surowo skrytykował skomentowanie kodu w swojej książce.