Wpis z mikrobloga

Mam pytanie odnośnie komentarzy, jakie macie do nich podejście? Ja przez cały czas byłem uczony i tam gdzie pracowałem było mówione, że nie powinno ich być, a jak są to znaczy że kod jest źle napisany. Staram się postępować z zasadami clean codu wujka Boba. W miejscu gdzie teraz jestem wszyscy narzucają na mnie pisanie komentarzy nawet jeżeli jest to przetłumaczenie metody z angielskiego na polski O.o

Mój przykładowy kod, za którego brak komentarzy mają do mnie pretensje: http://pastebin.com/JCQfZNRq
Co sądzicie o nim? Przy okazji jak zobaczycie tam jakąś głupotę to dzięki za info ;)
#programowanie #java
  • 32
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Gwozdziuuu: komentarze są przydatne kiedy nad kodem pracuje kilka osób albo robisz go dla kogoś. Po komentarzu może się łatwo odnaleźć co funkcja robi, gdzie przenosi itd. Nie trzeba się wczytywać a czasami jedna linijka komentarzu może wytłumaczyć 200 linijek funkcji...
  • Odpowiedz
@Gwozdziuuu: samodokumentujący się kod > bezsensowne komentarze.

Co do tego, co wkleiłeś: sent, nie sended ( ͡° ͜ʖ ͡°) Łapanie "Exception" to zwykle zła praktyka, ale nie wiem jak się u Was to rozwiązuje. Metoda "isIdReapeted" to coś a la kod z memów CS Graduate, IMO lepiej tak:

private boolean isIdReapeted(int idWithNoResponse)
  • Odpowiedz
@Gwozdziuuu: Myślę, że brak komentarzy w tym kodzie to jego najmniejszy problem.

Co do nich samych - javadoc na publicznym API, i komentarze na fragmentach, które do zrozumienia wymgają poznania pewnych szczegółów. Ogólnie, komentarze mają opisywać DLACZEGO coś jest zrobione, a nie JAK jest zrobione.
  • Odpowiedz
tam gdzie pracowałem było mówione, że nie powinno ich być, a jak są to znaczy że kod jest źle napisany.


@Gwozdziuuu: Mądrze powiedziane. Z wyjątkami na opis dlaczego kod jest w jakiś sposób napisany a nie jak.
  • Odpowiedz
@kisi3l: Dlaczego uważasz, że brak komentarzy to tu najmniejszy problem? Niestety, ale w chwili obecnej tu gdzie pracuję nikt nie robi mi rewizji kodu co strasznie mnie boli bo czuję, że w ten sposób daleko na zajadę.
  • Odpowiedz
@Gwozdziuuu: Ponieważ ten kod jest napisany bardzo źle. Począwszy od konwencji nazewniczej, przez formatowanie, brak spójności, używanie przestarzałych konstrukcji, wynajdowanie koła na nowo, exception handling, na skopanej logice (isIdRepeated) kończąc.
  • Odpowiedz
@Gwozdziuuu: W ogóle ta cała metoda private boolean isIdReapeted(int idWithNoResponse) jest do grubej refaktoryzacji - nazwa sugeruje coś innego niż się dzieje w środku, toSend wygląda na pojęcie w ogóle z innego kontekstu... gdyby tam dodać komentarz to obawiam się, że metoda zyskała by jeszcze jedno znaczenie, zupełnie niż wynikające z nazwy metody, jej ciała, bądź kontekstu jej rzeczywistego użycia. Ps. Tu trochę ortodoksyjnie. W erze podejścia funkcjonalnego chętnie wydzieliłbym
  • Odpowiedz
@kisi3l: @ppawel: Trochę mnie zmartwiliście :/ Staram się skupiać nad jakością kodu, jednak brakuje osoby, która sprawdzałaby mój kod wyższa stażem. Testów nie ma, bo oczywiście nie ma na to czasu. Robimy to też dużo powiedziane bo sam pracuję nad czymś całkiem sporym, a mam tylko rok doświadczenia komercyjnego.
  • Odpowiedz
Testów nie ma, bo oczywiście nie ma na to czasu.


@Gwozdziuuu: Testy są integralną, nierozerwalną częścią procesu deweloperskiego, zatem nie można uznać, że nie ma na nie czasu.

Nie wiem, jakiego podejścia do estymat pracy używacie, ale moim zdaniem jakie by ono nie było, powinno brać testy pod uwagę.
  • Odpowiedz
@Gwozdziuuu: poprzednie podejście jest dobre - dobry kod potrzebuje minimum komentarzy. Już największą głupotą jest komentowanie na zasadzie funkcja o nazwie: addAToB komentarz: dodaje A do B, a ludzie potrafią tak robić nawet wrzucając komentarz po angielsku. Oczywiście komentarze w wielu miejscach są pomocne, ale nie powinny robić tego co w czytelnym kodzie robią nazwy klas, metod, zmiennych.

za kod bez komentarzy powinno się iść do więzienia.


@npsr:
  • Odpowiedz
@npsr: Niekoniecznie... Dobrze napisany kod nie potrzebuje dużo komentarzy . Tu jest po prostu wymagany do automatycznej dokumentacji. Cóż niektórzy chcą dużych dokumentacji (ba często drukowanych), najczęściej ich nawet nie przegladają, ale wymóg jest dostarczyć. Tu masz dzięki temu samo generującą się dokumentacje i do niej jest opis.
  • Odpowiedz
@HetmanPolnyKoronny: @Kaczus2B: a gdzie na napisałem, że musi być ich dużo? Po prostu muszą być i tyle. Najczęściej wystarczy info, że wpuszczamy stringa a otrzymujemy boolean czy coś takiego i tyle.

Ale komentarze nie tylko są potrzebne, żeby przyśpieszyć komuś innemu pracę (bo nawet jeśli kod jest dobry i czytelny, nie zawsze znaczy, że powinienem go w ogóle czytać), to również porządkują całość wizualnie.

A już nie wspomnę
  • Odpowiedz
Najczęściej wystarczy info, że wpuszczamy stringa a otrzymujemy boolean czy coś takiego i tyle.


@npsr: większość cywilizowanych języków taką informację posiada już w nagłówku funkcji, fakt nie pomyślałem o tych mniej cywilizowanych ( ͡° ͜ʖ ͡°)
  • Odpowiedz