studio programacion para móviles libro interfaz grafica edición desarrollo curso aplicaciones java interface parameters named-parameters

java - programacion - ¿Por qué necesitamos especificar el nombre del parámetro en la interfaz?



manual de programacion android pdf (3)

Cuando creamos métodos de interfaz, no podemos hacer algo como en java :

void interface_method(Integer,String, /* other parameter */);

En vez de eso, noté que también necesitamos dar los nombres de los parámetros lile:

void interface_method(Integer i, String s);

Además, el implementador de la interfaz no necesita tener el mismo nombre de parámetro que en el método de la interfaz.

Encontré una pregunta similar sobre c # here . Mencionan un escenario de parámetro con nombre, pero no encuentro ninguna otra razón relevante específicamente en java.


Desde un punto de vista técnico no sería necesario.

Siempre lo he tomado como una normalización de sintaxis y una ayuda de documentación.

De esta manera hay:

  1. No hay razón para diferenciar entre la clase y la sintaxis del método de interfaz, y
  2. La documentación de Javadoc predeterminada se puede generar utilizando el nombre del parámetro (¡descriptivo!).

Mi opinión sobre esto:

  1. Esto está en la especificación del lenguaje para que los parámetros tengan nombres;

  2. La interfaz es la interfaz, los nombres ayudan a comunicar el significado;

  3. La interfaz no es realmente una declaración de implementación hacia adelante que seguirá como C / C ++, por lo que la comparación no es del todo correcta;


Sin nombres de parámetros resulta muy difícil distinguir entre parámetros del mismo tipo.

double divide(double, double);

La convención dice que el segundo parámetro sería el divisor. Pero con parámetros nombrados, es explícito y mucho más claro. A su vez, la documentación puede usar claramente los nombres en lugar de tener que decir continuamente "primer parámetro" o "segundo parámetro" cuando se trata de explicar cómo se debe usar el método y qué se supone que representa cada parámetro.