Qual è il nome per la "specifica" di una funzione / metodo?


21

Sono abbastanza sicuro che esista un nome speciale per la "specifica" di una funzione / metodo. È una parola che si riferisce a

  • quanti argomenti ci vogliono
  • l'ordine degli argomenti
  • quali argomenti sono opzionali

C'è un nome per quello?


2
Esistono diversi tipi di "specifiche". Lei menziona il tipo di argomento, l'ordine e la necessità. Insieme al tipo restituito, si chiama firma del tipo. Consideri il nome della funzione parte della specifica? Che ne dici del suo spazio dei nomi, come classe, pacchetto, modulo, ecc.? Questa specifica è per programmatori o macchine? Vedi la mia risposta
kdbanman,

4
Sono sorpreso che questa domanda abbia quattro voti stretti: è una domanda perfettamente legittima IMHO, e abbastanza rispondente (in effetti, ha già ricevuto risposta).
sleske,

@callum, modifica la tua domanda in modo che sia meno ambigua in modo che possa essere priva di tag. Ti interessa una lingua specifica? Una specifica della macchina o una specifica del programmatore? Una specifica per la chiamata o una specifica per l'implementazione?
kdbanman,

1
@kdbanman Stavo solo cercando di ricordare la parola "firma". Non è ambiguo. Non è specifico della lingua. È stato risposto. Va bene.
callum,

@Callum, è quello che ho pensato. Grazie per la risposta.
kdbanman,

Risposte:


47

Di solito si chiama firma del tipo .

Una firma di tipo include il tipo restituito della funzione, il numero di argomenti, i tipi di argomenti o gli errori che può restituire.


6
Generalmente? Sono abituato al "prototipo". Che a quanto pare è la firma del tipo più il nome - en.wikipedia.org/wiki/Function_prototype
ShadSterling

14
@Polyergic, la firma è più generale del prototipo (e più corretta in questo caso): un prototipo dichiara una firma. In particolare, "prototipo" implica una dichiarazione senza implementazione, come in una dichiarazione del metodo Java o C # in una interfacedichiarazione di funzione o C / C ++ in un file di intestazione (letteralmente chiamato a prototype).
kdbanman,

12
Inoltre, arity è un termine meno comunemente usato solo per il numero di argomenti.
Sebi,

^ Ooh, è interessante! Dovrò ricordare che per quando mi diletto in JS, dal momento che ho solo conteggi di argomenti per guidarmi, non tipi.
underscore_d

23

TL; DR Probabilmente stai parlando di una firma di funzione (o firma di metodo), parte della quale è una firma di tipo.

Ma dipende davvero da cosa consideri una funzione "spec". Lo interpreto come "tutte le informazioni richieste a un programmatore per chiamare una funzione". Ciò include il nome della funzione, il tipo di parametro, l'ordine e la necessità, probabilmente il tipo di ritorno e probabilmente anche lo spazio dei nomi di quella funzione.

Ma se tutte queste cose sono richieste (o anche ben definite) dipende dalla lingua / ambiente che stai usando. Inoltre, se si modifica la definizione in "tutte le informazioni richieste per una macchina per chiamare una funzione", la specifica è probabilmente diversa 1 .

A rigor di termini, una firma di funzione (o metodo) non è un termine coerente, 2, 3 anche nella stessa lingua. 4, 5, 6, 7 Ma è quasi sicuramente la parola che stai cercando, perché sarà compresa da quasi tutti i programmatori.


  1. Bozza di specifica C ++ n337, definizione 1.3.17, la firma non include il tipo restituito, poiché non è necessario risolvere la funzione.

  1. la "firma" non include le informazioni sullo spazio dei nomi
  2. "firma" include le eccezioni e modificatori come public, static, ecc

  1. Le "firme" C ++ non includono il tipo restituito
  2. C ++ "firme" fare includono tipo di ritorno.
  3. Le "firme" C ++ non includono il tipo restituito, a meno che la funzione non sia la specializzazione di un modello.
  4. Le "firme" C ++ includono informazioni sullo spazio dei nomi (ambito) e "altre cose varie" ...


Includerei anche quello che fa il metodo quando parla della sua "specifica". A seconda del focus della giornata, posso o meno includere qualsiasi informazione aggiuntiva necessaria per implementare il metodo.
un CVn il

@ MichaelKjörling, queste sono preoccupazioni valide, ma quelle sono digressioni piuttosto significative da ciò che la maggior parte dei programmatori chiamerebbe una "firma". Ciò che la funzione deve essere inclusa nel nome della funzione, quindi fa parte indirettamente della firma. Indipendentemente da ciò, non credo che il comportamento della funzione o l'implementazione siano ciò che intendeva chi l'ha chiesto. Modificherò di conseguenza se si scopre che l'ha fatto.
kdbanman,

Firma sì, "spec" no. (FWIW, penso che la tua risposta sia abbastanza buona e ben citata.)
un CVn

Grazie per il feedback. Non credo che la risposta sia così chiara come "no". Dipende da cosa si intende per specifica: si potrebbe certamente trovare una definizione ragionevole di specifica che includa il comportamento delle funzioni e le linee guida per l'implementazione. Puoi farlo nella tua risposta. Ma come ho detto, non penso che quelli siano quelli che intendeva chi l'ha chiesto.
kdbanman,

1
È stato votato perché, sebbene non language-agnosticgli esempi C ++ siano (A) rilevanti per me e (B) illustrativi della confusione che così spesso circonda la terminologia umana
underscore_d

0

Credo che il termine sia "contratto". Definisce l'interfaccia e ciò che ci si aspetta da chiamante e chiamante; tuttavia copre anche cose come valori consentiti di parametri che non sono qualcosa che molte lingue consentono di essere definiti dalla funzione o dalla definizione della classe, quindi il termine "contratto" potrebbe avere un significato più ampio di quello che intendevi. L'ho visto in diversi libri di programmazione orientati agli oggetti e specifici per Java. Non sono sicuro che sia specifico di Java, ma non vedo perché dovrebbe essere. Firma è l'altro termine comunemente usato, ma sono cresciuto fino a farmi piacere "contratto".


Questa è la risposta migliore se domanda è davvero il nome di "spec" della funzione / metodo. La firma stessa non dice nulla di ciò che fa effettivamente il metodo, ha permesso l'intervallo di parametri, i
contrappunti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.