.: Centra wiedzy :. Aktywuj swój bezpłatny dostęp!   .: Computerworld.pl :.
     w 
Zaloguj się
Zarejestruj się
 
KATALOG TEMATYCZNY
 
 
IDG.pl
PC World Komputer
CEO
CIO
CFO
CMO
CSO
NetWorld
Macworld
Playlista
Digit
Kino Domowe - DVD
Tips & Tricks
Gamestar
IT Partner
Internet Standard
Job Universe
ZOOM
Fotografia
Cyber
CyberJoy
Digital Life


 
FELIETONY
Komentując komentarze (2003.09.01)
Warto byłoby kiedyś stworzyć katalog zabobonów komputerowych. Moim zdaniem najczęściej pokutującym i stale powtarzanym przesądem z dziedziny inżynierii oprogramowania jest to, żeby w kodzie umieszczać wiele komentarzy. ''Linijka kodu, linijka komentarza'' - takie rady można usłyszeć od osób, które uważane są za doświadczonych informatyków.

Moje zdanie jest akurat odwrotne: uważam gęsto umieszczane komentarze za objaw jednej bądź kilku z następujących chorób: stosowania archaicznego języka programowania, marnego stylu programistycznego, nieuzasadnionej skłonności do optymalizacji albo niezorganizowanego procesu wytwórczego.

Zacznijmy od archaicznego języka programowania. Do zrozumienia instrukcji memcpy((*s)->ctempl, &(d.nn), sizeof(nier_t)) potrzebny jest niewątpliwie komentarz - i to pewnie nie linijka, a cały ekran - ale jeszcze bardziej potrzebne jest zastosowanie nowocześniejszego języka niż C. W podanej instrukcji (przykład z życia wzięty) chodziło o przekopiowanie informacji o nieruchomości z szablonu do nowo powołanej struktury. W porządnym, obiektowym języku (nawet w pokrewnym C++, ale także w Javie czy VB) taka instrukcja mogłaby wyglądać następująco: Wzorzec.PowołajKopię. I wtedy żaden komentarz nie byłby potrzebny.

Drugi problem, marny styl programistyczny, to na ogół wynik braku wykształcenia kierunkowego. Na przykład ludzie szukają złożonych i okrężnych mechanizmów tam, gdzie należałoby zastosować standardowy, np. używają tablicy tam, gdzie należałoby zastosować słownik. Zamiast opisowych nazw zmiennych i funkcji, stosuje się niezrozumiałe skróty; zamiast dbać o przejrzystość i oczywistość kodu, pisze się niezrozumiale, następnie "dokumentując" kod linijką komentarza.

Trzeci problem, nadmierna skłonność do optymalizacji, każe ludziom pisać programy tak, by były łatwe do zrozumienia dla komputera, a trudne dla człowieka. Muszą wtedy wyjaśniać, co mieli na myśli w komentarzu obok. Tymczasem kompilatory od dawna są w stanie optymalizować samodzielnie, a od lat istnieją narzędzia uruchamiania (profilery), które pomagają uderzyć prosto w newralgiczne punkty wydajności programu. Z reguły są to zupełnie inne miejsca niż te, których spodziewał się programista, pisząc kod. "Optymalny kod" zaś staje się koszmarem w przypadku śledzenia błędu lub przeróbki.

I wreszcie czwarty problem, niedojrzałość procesu. Ilekroć widzę komentarz w rodzaju: to jest procedura A, bierze parametry B, C i D, pisał ją osobnik E w dniu F, ciśnie mi się na usta pytanie - dlaczego te informacje znalazły się w kodzie? Czy powstała dokumentacja techniczna, w której znaczenie procedur i ich parametrów powinno być opisane? Czy jest opis koncepcji, myśli, która za danym kodem stoi? Czy stosowane jest narzędzie kontroli wersji, które śledzi kto i kiedy wykonał jakie zmiany? Jeżeli tak, to po co, u diabła, nadmiarowa informacja, która może się w pewnym momencie "rozjechać"? Jeżeli nie, to zamiast komentować, trzeba po prostu te elementarne narzędzia wdrożyć.

Aby być jednak uczciwym, dodam, że są sytuacje, w których komentowanie kodu jest potrzebne. Przede wszystkim wtedy, kiedy język czy szerzej - narzędzie - nie pozwala "powiedzieć tego, co pomyśli głowa". Tak, byśmy czytając program i towarzyszącą mu dokumentację, byli w stanie od razu wiedzieć, o co w tym wszystkim chodzi.

Nie chcę zniechęcać Państwa do stosowania komentarzy. Gorąco zachęcam po prostu do zatrudniania ludzi z porządnym przygotowaniem, pisania przy użyciu nowoczesnych narzędzi i w dobrym stylu, a nade wszystko do używania narzędzi procesowych w inżynierii oprogramowania.


 
 
Zobacz też:
Aktualności
Artykuły



RAPORT
Płace w IT
  • Niedobór czy nadmiar?
    Na rynku pracy dla specjalistów IT mamy dziś specyficzną sytuację. Z jednej strony, od kilku lat do polskich firm trafiają kolejne, liczne roczniki absolwentów studiów informatycznych. Nie ma zatem problemu ze znalezieniem młodych wykształconych kadr. Z drugiej jednak strony, znalezienie doświadczonego informatyka nadal pozostaje nie lada wyzwaniem.
  • Wygrać o włos
    Z dr. Tomaszem Rostkowskim, wykładowcą Szkoły Głównej Handlowej i współpracownikiem Institute of Advanced Managment oraz Jackiem Nowackim z Institute of Advanced Managment rozmawia Antoni Bielewicz.
  • Warszawa - miasto dla menedżera
    Kraków i Wrocław zdetronizowały Warszawę w rankingach najbardziej atrakcyjnych miejsc do inwestycji technologicznych. Stolica nadal jednak pozostaje atrakcyjnym miejscem pracy dla informatyków. Zwłaszcza zainteresowanych karierą menedżerską.
  • Gdańsk - dobre zarobki tylko w IT
    Gdańsk wraz z całym Trójmiastem znalazły się daleko w tyle jeśli chodzi o wynagrodzenia dla specjalistów IT. Informatyk ma jednak szansę na dobrą pensję przede wszystkim w renomowanych firmach technologicznych.



 
Wiadomości     Wywiady     Badania i analizy     Case Study     Felietony     Archiwum     Raporty     Programy     White Papers
O nas | Kontakt | Redakcja | Regulamin | Reklama | Ochrona prywatności
Zasoby premium - nie masz uprawnień dostępu: zapłać SMSem, zarejestruj się
Zasoby premium - dostęp przyznany
Copyright 1999 - 2008 IDG Poland SA. Wszelkie prawa zastrzeżone. Publikacja całości lub części zamieszczonych materiałów w jakiejkolwiek formie bez pisemnej zgody IDG Poland SA jest zabroniona. Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.

Korzystanie z serwisu Computerworld Online jest jednoznaczne z wyrażeniem zgody na następujące warunki obsługi. Serwis realizuje wytyczne ASME oraz uzupełnienia IDG dotyczące zasad publikacji w mediach elektronicznych. Prosimy też o zapoznanie się z ochroną prywatności.


Computerworld na świecie: Niemcy: Computerwoche | USA: Computerworld |