tipos - sintaxis de un metodo en java
Determinar qué verbo usar para los nombres de métodos en Java (6)
Entiendo que las convenciones de nombres son importantes por varias razones, la mayoría de las cuales tienen que ver con hacer que su código sea más legible y más fácil de integrar en proyectos más grandes, etc. En Java, la mayoría de las convenciones requieren que los nombres de los métodos estén en lowerCamelCase
comience con un verbo.
Mi pregunta es: ¿cómo elijo el verbo para comenzar el nombre del método?
Para hacer que esta pregunta sea menos vaga, a menudo me encuentro en una situación en la que mi primera opción para un nombre de método es un sustantivo que describe la salida. En estos casos, generalmente estoy dividido entre la adición de verbos genéricos como get
, generate
, calculate
, etc. en la fuente del sustantivo para ajustarse a la regla del verbo. ¿Hay pautas generales para cuándo usar cuál?
Aquí hay un ejemplo. Tengo un método que toma double[] array
y un int k
y devuelve double[] newArray
que es la longitud k
promedio móvil de array
, es decir, newArray[i] = (array[i-k+1]+...+array[i])/k
con algunos cambios para hacer que newArray
la misma longitud que array
. Mi inclinación es llamar a este método movingAverage
ya que eso es lo que devuelve, pero está fuera porque no comienza con un verbo. ¿Debo llamar a este método getMovingAverage
o getMovingAverage
o a calculateMovingAverage
o realmente no importa?
( Mi opinión ) No necesita un verbo en el nombre del método si el objeto no tiene un estado, como una biblioteca matemática. Compare computeSquareRoot (x) y getJoin (listOfStrings) con squareRoot (x) y join (listOfStrings).
Como dijiste y como podemos ver en las respuestas, los verbos usados al comienzo de los nombres de los métodos son casi los mismos verbos. Creo que, si se gasta la misma cantidad de esfuerzo para escribir documentación relacionada, los métodos se vuelven mucho más comprensibles e integrables :)
También me di cuenta de que después de leer la pregunta, la mayoría de los métodos con los que escribo comienzan con obtener , recuperar , crear . Así que de nuevo parece que la selección de verbos no importa tanto.
Mejor
Creo que para encontrar cualquier cosa que pueda ser una "solución" para el problema, primero debemos extraer los criterios que desempeñan un papel en la elección del nombre, como:
- readableness (trivial: getValue en lugar de transferValueFromThisObjectToYou)
- conveniencia (trivial: getCoordValue en lugar de)
- semántica del método (obtener no es lo mismo que calcular)
- contexto de uso (en los IDE por lo general escribo aaa.get_ y presiono Ctrl + Espacio para verificar qué puedo obtener del objeto)
- guías de códigos (u otras "guías" como la convención de Java Bean que te obligan a usar algunos nombres)
...
Sin embargo, como dijo suat, es mejor dedicar algunos esfuerzos a la documentación de sus métodos.
No creo que los nombres de los métodos java deban "comenzar con un verbo", creo que deberían describir la acción. Esto a menudo requiere un verbo, como los verbos describen las acciones. Por lo general, son partes importantes de la descripción (getVar y setVar significan cosas totalmente diferentes). Ocasionalmente, no agregan nada a la descripción (¿puedes pensar en algo que operaría en moverte medio además de obtener / calcular / generar?) Y se debería eliminar.
No olvide utilizar estos verbos "is, has or can" para métodos booleanos , como: está activado (), está lleno (), etc.
Por lo general me pregunto:
¿Qué está haciendo este método?
La respuesta dicta cómo debe llamarse el método. Es completamente independiente del programador, por supuesto.
Nota: Si no puede describir de manera sucinta lo que está haciendo el método, probablemente esté haciendo demasiado y debería dividirse.
Escogiendo el verbo de tu método:
- Realización de cálculos: calcular
- Recuperar datos: obtener o recuperar
- Datos mutantes: conjunto o cambio
- Eliminar datos: eliminar o eliminar
- Convertir: convertir
- Iniciar una acción: iniciar o iniciar
- Detener una acción: detener o cancelar
Ahora, no todos los métodos comienzan con un verbo; pero realmente no necesitan Si tu lees:
... myString.length();
o
... myArray.size();
Usted sabe exactamente lo que está pasando, no se requiere verbo. Esto es cierto para muchos métodos de clase superiores en la jerarquía de Java; Colecciones, matemáticas, etc. Siempre que el nombre comunique con precisión lo que hace el método, está bien.