Cichy Fragles

skocz do treści

Sprytne komentowanie

Dodane: 26 kwietnia 2009, w kategorii: Techblog

Każde dziecko, które miało do czynienia z programowaniem, dobrze wie, że komentarze w kodzie pełnią dwie funkcje: po pierwsze, oczywiście komentowanie kodu (co za niespodzianka, nie?), po drugie – „wyłączanie” kawałków kodu, których nie chcemy wykonywać, ale nie chcemy ich także kasować. Banał. Jest jednak pewna nie do końca banalna kwestia – zdarza się, że podczas pisania i testowania kodu na przemian „włączamy” i „wyłączamy” jakiś fragment, sprawdzając jego działanie oraz działanie kodu bez niego. Żaden problem, jeśli fragment jest krótki i można go zakomentować/odkomentować w dwie sekundy – ale jeśli zajmuje on, powiedzmy, kilka ekranów, a nasz edytor nie ma automatycznego usuwania znaków końca komentarza po usunięciu początku, to ciągłe latanie kursorem w te i wewte może być dość męczące. Co więcej, jeśli odkomentujemy kod, a potem coś dopiszemy i zechcemy go znowu zakomentować, to nierzadko stracimy chwilę na znalezienie miejsca, w którym fragment do zakomentowania się kończy. Niby drobiazg, ale czasem przeszkadza.

Cóż zatem począć? Na pewno wygodniej by było, gdyby początek i koniec komentarza był widoczny także po jego chwilowym usunięciu, a włączanie i wyłączanie komentarza dało się zrobić w jednym kroku, zamiast w dwóch. Niektórzy radzą sobie z tym problemem, obejmując kod klamrami i dając na początku warunek „if(0)”. Efekt niby taki sam jak przy komentarzu, no i wystarczy zmienić zero na jedynkę, żeby kod się wykonał. Nie jest to jednak ani eleganckie, ani nie odpowiada w pełni komentarzowi – raz, że „zakomentowany” w ten sposób kod musi być poprawny, żeby kompilator/interpreter się nie wywalił, a dwa, że nie widać na pierwszy rzut oka, że kod jest nieaktywny, bo kolorowanie składni pozostaje.

Można jednak za pomocą prostego triku osiągnąć za pomocą komentarzy taki sam efekt jak przy „if(0)”:

    /*/
    długi kawałek kodu
    //*/

Jedyne, co trzeba zrobić, żeby odkomentować taki kod, to skasowanie gwiazdki na początku. Końca nie musimy już szukać, bo staje się on wtedy nieszkodliwym komentarzem jednolinijkowym – podobnie jak i początek, który może sobie spokojnie zostać na miejscu. Mała rzecz, a cieszy.

Nie koniec na tym – powyższą konstrukcję możemy jeszcze rozbudować:

    /*/
    pierwszy kawałek kodu
    /*/
    drugi kawałek kodu
    //*/

W takiej sytuacji pierwszy fragment jest zakomentowany, a drugi odkomentowany. Teraz znów wystarczy skasować początkową gwiazdkę, a sytuacja się odwróci – pierwszy kawałek się odkomentuje, a drugi dla odmiany zakomentuje. A jeśli chcemy odkomentować obydwa, musimy tylko skasować jeszcze drugą gwiazdkę. Ten trik już się raczej rzadko przyda, ale znać go nie zaszkodzi. Można to oczywiście rozbudowywać w nieskończoność, tworząc ciąg naprzemiennie aktywnych i ukrytych fragmentów, ale dla takiej zabawy już za bardzo nie widzę sensownego zastosowania.

Oczywiście wszystko to zadziała tylko w tych językach, które obsługują zarówno komentarze wielolinijkowe („/* */”) jak i jednolinijkowe („//”), więc np. w CSS tak nie zrobimy, z braku obsługi tych ostatnich. Co jednak nie znaczy, że się w ogóle nie da:

    /*/
    długi kawałek kodu
    /**/

Tym razem, żeby usunąc komentarz, trzeba dla odmiany dodać drugą gwiazdkę obok pierwszej. Niestety, tej konstrukcji już się nie da rozbudować analogicznie do wcześniejszej, ale cóż – można bez tego żyć.

Natomiast zupełnie żadnego triku nie zrobimy np. w Perlu, który w ogóle nie ma komentarzy wielolinijkowych. Ale przynajmniej „if(0)” zadziała zawsze i wszędzie;-).


Komentarze

Podobne wpisy