Interfacce utente per il completamento della funzione C

0

Nella sintassi della chiamata al metodo in molti linguaggi orientati agli oggetti, l'oggetto destinatario va a sinistra del nome del metodo, ad es. %codice%. Ciò è utile quando si utilizza un IDE con completamento codice / code assist / Intellisense; quando l'utente digita un'espressione di chiamata di metodo, il destinatario è già stato digitato, quindi l'IDE può restringere le sue scelte di metodo da applicare a quel ricevitore (almeno nelle lingue tipizzate staticamente).

Quello che mi chiedo è, qual è l'interfaccia utente per il completamento del metodo / funzione come nelle lingue in cui il nome del metodo o della funzione passa prima al suo ricevente e / o agli argomenti, ad es. Lisp o C? L'utente deve attivare un tasto di scelta rapida, a cui risponde l'IDE chiedendo il ricevente e / o gli argomenti, quindi una volta digitato il valore nell'IDE viene visualizzato un elenco di metodi o funzioni applicabili a tale elenco?

    
posta echristopherson 08.03.2014 - 20:02
fonte

1 risposta

1

(Risposta breve: dipende da un numero di IDE e di editor diversi di Gazill che potrebbero gestire tutti questi casi in modo leggermente diverso, quindi non esiste un'unica interfaccia utente che tutti utilizzino)

Il problema è molto più grande delle sole lingue in cui il metodo viene presentato prima dell'invocante. Che orrore deve essere programmare in linguaggi che non supportano nemmeno OOP, o che sono digitati dinamicamente in modo da non avere nessuna idea quali metodi potrebbero essere chiamati sull'oggetto all'interno di qualche variabile!

Ci sono diversi modi per uscire da questo enigma:

  1. Basta ricordare quali metodi possono essere chiamati su quale tipo. E se non siamo sicuri, possiamo sempre leggere la documentazione. Saresti sorpreso di come funzioni bene.

  2. Il completamento del testo stupido può completare parole che si verificano nello stesso file o progetto. Quindi, se c'è un method foobar() da qualche parte, digitare foo potrebbe essere completato a foobar . Sfortunatamente, sarebbe suggerita anche una variabile foobaz .

  3. Qualsiasi forma di completamento più avanzato. Supponiamo di voler chiamare frobnicate su un'istanza Foo e la sintassi è method(instance, arguments...) . Quindi digitando fro potresti suggerire

    frobnicate(Foo foo, int x)
    frobnicate(Bar bar, int x, int y)
    frodo
    

Puoi essere abbastanza produttivo senza il completamento automatico di tipo intellisense, sebbene sia una funzionalità molto carina.

La mia lingua primaria sembra essere tipizzata dinamicamente e sfida qualsiasi analisi statica (la metaprogrammazione è troppo carina per rinunciare), quindi suggerire metodi disponibili per alcuni oggetti è assolutamente impossibile. Ma il problema è più piccolo di quanto sembri: non tutto il mio codice è orientato agli oggetti, piuttosto spesso il codice procedurale o funzionale è più adatto. Sopravvivo anche leggendo i documenti delle biblioteche che uso. Il completamento del testo stupido che offre il mio editor è un aumento generale: è più un lavoro che ottenere solo suggerimenti sensati, ma è ancora molto più veloce della digitazione di tutto. Il modo in cui ho impostato il mio editor non è necessario alcun collegamento per attivare i suggerimenti, solo un prefisso di una lunghezza minima.

    
risposta data 08.03.2014 - 22:42
fonte

Leggi altre domande sui tag