¿Cuál es el nombre de la 'especificación' de una función / método?

21

Estoy bastante seguro de que hay un nombre especial para la 'especificación' de una función / método. Es una palabra que se refiere a

  • cuantos argumentos toma
  • el orden de los argumentos
  • qué argumentos son opcionales

¿Hay un nombre para eso?

callum
fuente
2
Hay algunos tipos diferentes de "especificaciones". Usted menciona el tipo de argumento, el orden y la necesidad. Tomado junto con el tipo de retorno, se llama firma de tipo. ¿Considera el nombre de la función parte de la especificación? ¿Qué tal su espacio de nombres, como clase, paquete, módulo, etc.? ¿Es esta especificación para programadores o máquinas? Mira mi respuesta.
kdbanman
44
Me sorprende que esta pregunta tenga cuatro votos cercanos: es una pregunta perfectamente legítima en mi humilde opinión, y bastante responsable (de hecho, ya ha sido respondida).
sleske
@callum, edite su pregunta para que sea menos ambigua, de modo que se pueda descartar. ¿Le preocupa un idioma específico? ¿Una especificación de máquina o una especificación de programador? ¿Una especificación para llamar o una especificación para implementación?
kdbanman
1
@kdbanman Solo intentaba recordar la palabra "firma". No es ambiguo. No es específico del idioma. Ha sido respondido. Está bien.
callum
@callum, eso es lo que pensé. Gracias por la respuesta.
kdbanman

Respuestas:

47

Por lo general, esto se llama una firma de tipo .

Una firma de tipo incluye el tipo de retorno de la función, el número de argumentos, los tipos de argumentos o los errores que puede transmitir.

Kilian Foth
fuente
66
¿Generalmente? Estoy acostumbrado a "prototipo". Que aparentemente es la firma de tipo más el nombre - en.wikipedia.org/wiki/Function_prototype
ShadSterling
14
@Polyergic, la firma es más general que el prototipo (y más correcto en este caso): un prototipo declara una firma. Específicamente, "prototipo" implica declaración sin implementación, como en una declaración de método Java o C # en una interface, o una declaración de función C / C ++ en un archivo de encabezado (literalmente llamado a prototype).
kdbanman
12
Además, aridad es un término menos utilizado para la cantidad de argumentos.
Sebi
^ Ooh, esa es una interesante! Tendré que recordar eso cuando incursiono en JS, ya que solo tengo argumentos para guiarme, no tipos.
underscore_d
23

TL; DR Probablemente estés hablando de una firma de función (o firma de método), parte de la cual es una firma de tipo.

Pero realmente depende de lo que consideres una función "spec". Lo interpreto como "toda la información requerida para que un programador llame a una función". Esto incluye el nombre de la función, el tipo de parámetro, el orden y la necesidad, probablemente el tipo de retorno, y probablemente incluso el espacio de nombres de esa función.

Pero si todas esas cosas son necesarias (o incluso bien definidas) depende del idioma / entorno que esté utilizando. Además, si cambia la definición a "toda la información requerida para que una máquina llame a una función", la especificación probablemente sea diferente 1 .

Estrictamente hablando, una firma de función (o método) no es un término consistente, 2, 3 incluso dentro del mismo idioma. 4, 5, 6, 7 Pero es casi seguro que es la palabra que está buscando, porque casi cualquier programador la entenderá.


  1. C ++ Spec Draft n337, definición 1.3.17, la firma no incluye el tipo de retorno, porque no es necesario resolver la función.

  1. "firma" no incluye información de espacio de nombres
  2. "firma" incluye excepciones y modificadores como public, static, etc.

  1. Las "firmas" de C ++ no incluyen el tipo de retorno
  2. C ++ "firmas" hacer incluyen el tipo de retorno.
  3. Las "firmas" de C ++ no incluyen el tipo de retorno, a menos que la función sea la especialización de una plantilla.
  4. Las "firmas" de C ++ incluyen información de espacio de nombres (alcance) y "otras cosas misceláneas" ...

kdbanman
fuente
Incluiría también al menos lo que hace el método cuando se habla de su "especificación". Dependiendo del enfoque del día, puedo incluir o no la información adicional necesaria para implementar el método.
un CVn
@ MichaelKjörling, esas son preocupaciones válidas, pero esas son digresiones bastante significativas de lo que la mayoría de los programadores llamarían una "firma". Lo que hace la función debe incluirse en el nombre de la función, por lo que es indirectamente parte de la firma. De todos modos, no creo que el comportamiento de la función o la implementación sean lo que pretendía el autor de la pregunta. Editaré en consecuencia si resulta que lo hizo.
kdbanman
Firma sí, "especificación" no. (FWIW, creo que su respuesta es bastante buena y bien citada.)
un CVn el
Gracias por la respuesta. No creo que la respuesta sea tan clara como "'spec' no". Depende de lo que se entienda por especificación: ciertamente se podría llegar a una definición razonable de especificación que incluya el comportamiento de la función y las pautas de implementación. Eres bienvenido a hacer eso en tu propia respuesta. Pero como dije, no creo que eso sea lo que pretendía el autor de la pregunta.
kdbanman
1
Upvoted porque, aunque no language-agnostic, el C ++ ejemplos son (A) relevante para mí y (B) ilustrativos de la confusión que a menudo rodea la terminología humana
underscore_d
0

Creo que el término es "contrato". Define la interfaz y lo que se espera de la persona que llama y de la persona que llama; sin embargo, también cubre cosas como los valores permitidos de los parámetros, que no es algo que muchos lenguajes permitan definir mediante la definición de función o clase, por lo que el término "contrato" podría tener un significado más amplio de lo que usted quiso decir. Lo he visto en varios libros de programación orientados a objetos y específicos de Java. No estoy seguro de si es específico de Java, pero no veo por qué debería ser así. Firma es el otro término comúnmente utilizado, pero me llegó a gustar "contrato".

Andrés
fuente
Esta es la mejor respuesta si la pregunta es realmente el nombre de "especificación" de la función / método. La firma en sí no dice nada acerca de lo que hace el método en realidad, permitió gama de parámetros, contraints no functionnal y así sucesivamente ...
ch7kor