IntelliSense

Najważniejsza, obok kolorowania składni, funkcjonalność edytora kodu — przewidywanie co chcesz napisać i podpowiadanie gotowych rozwiązań. Czy to się nazywa IntelliSense, code completion, code hinting czy jeszcze jakoś inaczej — bez znaczenia. Ważne, żeby było i żeby działało sprawnie, bo od tego zależy jakość, szybkość powstania, a nieraz w ogóle zaistnienie kodu.

Postronnemu obserwatorowi wydawać by się mogło, że programista (czy ktokolwiek piszący jakikolwiek kod) wie co i dlaczego chce napisać. Nic bardziej mylnego. Co dzień obserwuję (również u samego siebie) przejawy kompletnej ignorancji w kwestii prawidłowego nazewnictwa zmiennych, klas i metod. Przecież wystarczy pamiętać namespace i początek nazwy — klasa "się znajdzie". Wystarczy znać klasę czy mieć jej obiekt i choćby kojarzyć nazwę metody — konkretna metoda "się znajdzie" i jej parametry "się podpowiedzą". Pisanie przed myśleniem to i tak najbardziej popularna technika kodowania[1].

Zakres podpowiadania, możliwości wyręczania użytkownika, jak i sposób wywołania tych czarów różni się między implementacjami dosyć znacznie. Do podstawowej funkcjonalności w każdym edytorze używającym tego typu mechanizmów należy oczywiście podpowiadanie składowych klas. Podpowiedź jest uaktywniana po naciśnięciu jakiejś kombinacji klawiszy (np. Ctrl+Space) lub po wpisaniu znaków jednoznacznie wskazujących w danym języku programowania na miejsce do tego odpowiednie, czyli np. po wpisaniu ., -> lub :: w przypadku C++. Przykładowo w KDevelop może to wyglądać tak:

Rys.1. Code Completion w KDevelop

W tym skądinąd bardzo przyjemnym środowisku funkcjonalność code completion chyba nie jest jeszcze do końca dopracowana — zresztą idealnie oddaje to stan dokumentacji na ten temat. Jednak, jak widać na załączonym powyżej obrazku, jest i działa.

Ciekawiej jest w Visual Studio dla C# (aka Microsoft Visual C# .NET) gdzie funkcjonuje mechanizm IntelliSense. Między innymi wykorzystuje on tagi dokumentacyjne podczas podpowiadania składowych klas lub kolejnych parametrów metod (to jeszcze jeden powód, dla którego warto tworzyć dokumentację kodu). IntelliSense podpowiada wiele różnych rzeczy równocześnie ale, jak widać na obrazku poniżej, podpowiedź jednego elementu nie koliduje z podpowiedzią innego (jak to czasem bywa w niektórych programach[2]) i stara się rozmieścić w wolnym miejscu ekranu. W efekcie dosyć łatwo wywołać wokół kursora "tłum życzliwych"...

Rys.2. IntelliSense w Visual Studio C# .NET

Microsoftowe IntelliSense obejmuje również inne ciekawostki, np. automagiczne (za pomocą klawisza Tab) tworzenie metod obsługi eventów, implementację metod interfejsu w klasie itp. Jeśli do tego dołoży się jeszcze formatowanie kodu (ustalanie wcięć bloków w momencie wpisania nawiasu zamykającego }) to w efekcie daje to całkiem ciekawy i efektywny edytor kodu.

Rys.3. IntelliSense w Visual Studio C# .NET - obsługa eventów

Oczywiście powyższe to tylko pierwsze z brzegu przykłady — podpowiadanie kodu i podobne ułatwienia edycji występują praktycznie w każdym edytorze specjalizowanym, który usiłuje sobą przedstawiać cokolwiek wartościowego. I to zarówno w edytorach dla zastosowań czysto programistycznych, jak i w edytorach XML, (X)HTML, (PL/)SQL czy czegokolwiek innego, co można podciągnąć pod pojęcie kodu. Są to rozwiązania albo całkiem proste, albo tak rozbudowane i imponujące jak np. wykorzystanie Javadoc podczas podpowiadania kodu w edytorze NetBeans. Oprócz mechanizmów wbudowywanych w podstawową funkcjonalność edytorów istnieje cała masa "ulepszaczy" działających na zasadzie dodatków czy innych pluginów. Np. Visual Assist dla pragnących poprawić IntelliSense w Visual Studio. Intellisense for Vim dla spragnionych większych możliwości w Vimie (akurat to tylko dla wersji windowsowej). I tak dalej — praktycznie wszędzie roi się od podpowiadaczy wszelkiej maści...

Czasy, kiedy edytor kodu służył po prostu do wprowadzania znaków do pliku tekstowego, minęły już bezpowrotnie. Chociaż upowszechnienie się tej idei trochę trwało. Pomysł nie powstał przecież wczoraj — całkiem zaawansowany mechanizm symbol completion funkcjonował np. w edytorze języka Alice Pascal na komputerach IBM PC i Atari ST w roku 1985.

[1] W moim osobistym przypadku obserwuję jeszcze coś innego — o ile odnośnie oprogramowania zasada ta dotyczy mnie w całej rozciągłości, o tyle w przypadku kodu (X)HTML jakakolwiek podpowiedź ze strony edytora strasznie mnie irytuje. To zadziwiające.

[2] Np. w edytorze Quanta podczas pisania kodu PHP.

Komentarze

#1 | 2004.05.17 15:42 | adam

och jak mi się marzy okienko z podpowiedziami w editplusie..

 

Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.