IntelliSense: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
fix forma
 
Riga 1:
[[File:Intellisense.png|thumb|ScreenshotSchemata dell'IntelliSense in azione in [[Microsoft Visual C++]]]]
 
'''IntelliSense''' è una forma di [[Autocompletamento|completamento automatico]] resa popolare da dall'[[VisualAmbiente Studiodi sviluppo integrato|IDE]] di [[IntegratedMicrosoft DevelopmentVisual EnvironmentStudio]]. Serve inoltre come documentazione per i nomi delle [[Variabile (matematica)|variabili]], delle [[Funzione (matematica)|funzioni]] e dei [[Metodo (programmazione)|metodi]] usando [[metadati]] e [[Riflessione (informatica)|reflectionriflessioni]].
 
== Panoramica ==
Riga 7:
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.
 
:{{Citazione|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.|Murach's (PaginaC#, 2005, p. 56)}}
''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 Sharp|C#]], [[J Sharp|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 [[Visual Basic for Applications|VBA]] in [[Microsoft Office]] e altri ancora.
 
Funzionalità simili sono apparse in altri editor di codice. Per esempio, [[Vim (editor di testo)|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 listlista di parole contestuali ([[UltraEdit]] ad esempio). Altri come [[Borland]] e l'IDE di [[Sun Microsystems]] usano database interni.
 
== Esempio (C++)di utilizzo ==
 
PrendiamoSia ad esempiodata un'applicazione cheC++ dotata hadi una classe <kbd>Foo</kbd> con alcuni metodi:
<pre>
class Foo {
public:
void bar();
void foo_bar(char c, int n);
};
 
<syntaxhighlight lang="c++">
</pre>
class Foo {
Quando lo sviluppatore usa questa classe nel codice, ad esempio:
public:
<pre>
void bar();
Foo foo;
void foo_bar(char c, int n);
foo.
};
</pre>
</syntaxhighlight>
non appena lo sviluppatore digita il punto dopo '''<kbd>foo</kbd>''', l'IntelliSense automaticamente mostra una lista di tutti i metodi disponibili (ad esempio <kbd>bar()</kbd> e <kbd>foo_bar()</kbd>). 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.
 
Quando viene inizializzata un'istanza di classe, ad esempio, <kbd>Foo foo</kbd>, non appena viene digitato <kbd>foo.</kbd>, il sistema di IntelliSense mostra automaticamente l'elenco dei metodi disponibili (in questo caso <kbd>bar()</kbd> e <kbd>foo_bar()</kbd>) e, se disponibile, mostra una breve descrizione della funzione membro recuperata dalla documentazione del codice sorgente. L'IntelliSense indica anche i parametri richiesti in un'altra finestra a comparsa mentre vengono digitati, suggerendo anche le potenziali variabili da usare. Man mano che vengono digitati i parametri, IntelliSense evidenzia il parametro corrente.
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òpossibile "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 ==