Para mí, encontrar un buen nombre para algo siempre vuelve a pensar en él como un objeto que tiene que justificar su existencia. Pregúntese:
- ¿Qué hace la clase / método / variable, es decir, cuál es su propósito más amplio y para qué sirve?
- ¿Qué tiene que decir específicamente sobre su propósito para comunicarse, es decir, cuál es la parte esencial que debe tener el nombre?
La mayoría de los desarrolladores estarían de acuerdo en que la legibilidad siempre es de suma importancia cuando se trata de nombrar. No solo escriba código para que sepa lo que quiere decir mientras lo escribe, escríbalo para que alguien que vea el código por primera vez en algún momento en el futuro sepa lo que quiere decir sin tener que pensar demasiado. Escribirás el código solo una vez, pero durante su vida probablemente tendrá que editarlo muchas veces y leerlo aún más.
El código debe autodocumentarse, es decir, su nombre debería hacer obvio lo que hace algo. Si necesita explicar lo que hace una línea de código en un comentario, y cambiar el nombre de las cosas no mejora lo suficiente, debería considerar seriamente refactorizar esa línea en un nuevo método con un nombre descriptivo apropiado, de modo que al leer el método original, el La nueva llamada al método describe lo que está sucediendo. No tengas miedo de tener nombres largos; por supuesto, no deberías escribir novelas en nombres de clase / método / variable, pero prefiero que un nombre sea demasiado largo y descriptivo que demasiado corto y necesito averiguar qué hace mirando debajo del capó. Excepto por algunas excepciones obvias, como las coordenadas x / y y los acrónimos de uso común, evite los nombres y abreviaturas de un solo carácter. Llamar a algo "bkBtn" en lugar de "backButton"
Tanto como lo permita su idioma, haga que su código se lea como una oración en inglés. Los objetos usan sustantivos, los métodos usan verbos. Los métodos booleanos generalmente comienzan con "es", pero hay muchas otras opciones que transmiten el significado aún mejor, dependiendo del caso de uso, como "puede", "debería" o "hace". Por supuesto, no todos los idiomas pueden ser tan buenos como Smalltalk en esto, pero algunos símbolos generalmente se entienden como partes de la oración. Dos convenciones de Smalltalk que personalmente me gusta llevar a otros idiomas tanto como sea posible son prefijar el nombre de los parámetros de bucle con "cada", y prefijar los parámetros del método con el artículo "a" (o "an", o "algunos" para colecciones) . Esto puede no ser un estándar común en Java, y cualquiera puede ignorar este bit, pero encuentro que esto mejora enormemente la legibilidad del código. Por ejemplo (ejemplo en Java):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
Esto debería ser legible para las personas con un poco de conocimiento de Java como algo así:
Para determinar si debe considerar abreviar una lista de algunos nombres (que son cadenas), repita algunos nombres y, para cada nombre, determine si es demasiado largo; si es así, regrese true
; si ninguno es demasiado largo, regrese false
.
Contraste el código anterior con solo nombrar el argumento strings
y la variable de bucle string
, especialmente en un método más complejo. Tendría que mirar de cerca para ver la diferencia en lugar de que el uso sea obvio de un vistazo al nombre.