IntelliSense

Da Wikipedia, l'enciclopedia libera.
Screenshot dell'IntelliSense in Visual C++

IntelliSense è una forma di completamento automatico resa popolare da Visual Studio Integrated Development Environment. Serve inoltre come documentazione per i nomi delle variabili, delle funzioni e dei metodi usando metadati e reflection.

Panoramica[modifica | modifica sorgente]

L'uso dell'Intellisense è un metodo conveniente per visualizzare la descrizione delle funzioni, in particolar modo la lista dei loro parametri. Questa tecnologia riesce a velocizzare lo sviluppo del software riducendo la quantità di input attraverso la tastiera richiesto. Riduce inoltre il bisogno di appoggiarsi a documentazione esterna dato che molte informazioni come firme dei metodi, lista dei parametri e altro appaiono in automatico sul focus dell'attenzione dello sviluppatore.

Murach's C# 2005 dice:

Per rendere più semplice il riferimento ai membri di un oggetto o di una classe, l'IntelliSense mostra una lista di membri disponibili per quella classe o oggetto dopo aver digitato il nome della classe o dell'oggetto e un punto. (Pagina 56)

Il meccanismo funziona accedendo a un database automaticamente generato in memoria di classi, nomi di variabili e altri costrutti definiti o referenziati dall'applicazione che si sta sviluppando. La "classica" implementazione dell'IntelliSense funziona intercettando caratteri chiave come un punto, che dipendono dal linguaggio usato. Non appena lo sviluppatore digita uno di questi caratteri subito dopo un'entità contenente uno o più membri accessibili (come le variabili contenute o le funzioni), l'IntelliSense mostra i suggerimenti di completamento attraverso una finestra pop-up. Lo sviluppatore può sia accettare il suggerimento premendo un tasto di completamento (<Tab> o <Invio> o un terminatore specifico come il punto e virgola in C++) o continuare a digitare il nome. Alla fine IntelliSense determinerà esattamente quale variabile o funzione lo sviluppatore desidera, fornito un numero sufficiente di informazioni. Il meccanismo permette inoltre allo sviluppatore di scegliere tra i vari overload delle funzioni, nei linguaggi che supportano la programmazione orientata agli oggetti. L'IntelliSense può inoltre mostrare una breve descrizione della funzione in una finestra pop-up (questa caratteristica è dipendente dalla quantità di informazioni contenute nel codice sorgente).

Questo meccanismo fu incluso in VB 5.0 e si trova in tutte le ultime versioni di Visual Studio. L'IntelliSense supporta C++, C#, J#, Visual Basic, XML, HTML and XSLT tra gli altri. Altri prodotti Microsoft che includono l'IntelliSense sono FrontPage, Expression Web (nella vista codice), gli IDE per VBA in Microsoft Office e altri ancora.

Funzionalità simili sono apparse in altri editor di codice. Per esempio, Vim (dalla versione 7.0) supporta omnicompletion: una forma di autocompletamento programmabile simile a l'IntelliSense. Molti editor e IDE che incorporano funzionalità simili usano ctags per creare la loro list di parole contestuali (UltraEdit ad esempio). Altri come Borland e l'IDE di Sun Microsystems usano database interni.

Esempio (C++)[modifica | modifica sorgente]

Prendiamo ad esempio un'applicazione che ha una classe Foo con alcuni metodi:

class Foo {
  public:
    void bar();
    void foo_bar(char c, int n);
};

Quando lo sviluppatore usa questa classe nel codice, ad esempio:

Foo foo;
foo.

non appena lo sviluppatore digita il punto dopo foo, l'IntelliSense automaticamente mostra una lista di tutti i metodi disponibili (ad esempio bar() e foo_bar()). Lo sviluppatore può quindi selezionarne uno utilizzando i tasti freccia e premendo un carattere di completamento quando la funzione membro corretta è evidenziata. Quando disponibile, l'IntelliSense mostra una breve descrizione della funzione membro come nella documentazione del codice sorgente.

L'IntelliSense indica anche i parametri richiesti in un'altra finestra pop-up mentre lo sviluppatore li completa. Mentre lo sviluppatore digita il nome di una variabile, il meccanismo propone inoltre dei suggerimenti per il suo completamento. L'IntelliSense continua a mostrare i parametri, evidenziando quello su cui si lavora, mentre lo sviluppatore digita.

Lo sviluppatore può "forzare" l'IntelliSense a mostrare la sua lista pop-up fuori dal contesto premendo <Ctrl>+<spazio>. In Visual Studio questa mostra l'intero object model del dominio dell'applicazione disponibile allo sviluppatore.

Storia[modifica | modifica sorgente]

L'IntelliSense fu originariamente introdotto come una caratteristica di un prodotto mainstream Microsoft nel 1996, con Visual Basic 5.0 Control Creation Edition, che era essenzialmente un prototipo disponibile al pubblico di Visual Basic 5.0. Anche se inizialmente la caratteristica era stata pensata per l'IDE di Visual Basic, l'IntelliSense fu velocemente incorporato in Visual FoxPro e Visual C++ in Visual Studio 97 (una revisione dopo che fu visto per la prima volta in Visual Basic). Poiché era basato sulle capacità introspettive del COM, le versioni dell'IntelliSense di Visual Basic erano sempre più robuste e complete delle corrispettive versioni 5.0 e 6.0 (97 e 98 nella sequenza di nomi di Visual Studio ) di Visual C++, che non aveva il beneficio di essere completamente basato sul COM. Queste limitazioni (criticate da molti sviluppatori VC++ sin dalla versione 97) sono state rimosse nella linea seguente di prodotti-.NET. Per esempio, una delle più richieste caratteristiche mancanti dai prodotti pre-.NET era il supporto per i template, che adesso è disponibile.

L'IntelliSense è entrato in una nuova fase di sviluppo con l'unificazione dei prodotti in Visual Studio .NET rilasciato nel 2001, migliorato da una più potente introspezione e dalle capacità di documentazione del codice del .NET framework. Con Visual Studio 2005, l'IntelliSense è attivato di default quando lo sviluppatore inizia a scrivere, anziché richiedere caratteri particolari (anche se questo comportamento può essere disattivato). L'IDE ha una maggiore capacità di contestualizzazione basata su quello che lo sviluppatore sta digitando, al punto che persino i costrutti base del linguaggio come for e while sono inclusi nella lista delle scelte.

Collegamenti esterni[modifica | modifica sorgente]