Meaningful names - ajpaez/Learning GitHub Wiki
#Nombres significativos
- Usa nombre que revelen la intención de la variable, función o clase. Si debes de indicar porque existe, que hace o como usarlo y requiere de un comentario, entonces el nombre no revela la intención de lo referenciado.
- Evita la desinformación. Dar nombres muy similares de forma parecida es información, usar descripciones inconsistentes es desinformación.
- Haz distinciones significativas. Las series numéricas en los nombres no son desinformativas - pero son no informativas. "Noise words" son palabras sin sentido. Sufijos o palabras nexo, por ejemplo, Producto y ProductInfo o ProductData hacen que suenen diferente sin que cambie su significado. Otras "noise word" podrían ser 'a', 'an', y 'the'.
- Usa nombres pronunciables.
- Usa nombre que se puedan buscar. Nombre de una sola letra o constantes numéricas son muy difícil de encontrar. La longitud del nombre debe corresponderse con el tamaño de su scope.
- Evita prefijos en miembros de una clase. Como 'var_', 'm_'.
- Interfaces e implementaciones. Es preferible dejar las interfaces sin sufijos/prefijos, en su nombre base y añadir un sufijo a su implementación como '_Imp'
- Evita los mapeos mentales. Este problema generalmente surge de la solución de no usar términos de dominio del problema ni términos de dominio de la solución.
- Nombre de clases. Los nombres de clases y objetos deberán ser sustantivos o frases con sustantivos como Customer, Account. El nombre de una clase no debe ser un verbo.
- Nombre de métodos. Los nombres de métodos deberán ser verbos o frases con verbos como postPayment, deletePage o save. Accessors, mutators y predicates deben ser llamados por sus valores y prefijos con get, set e is acorde al standar javaben Cuando los constructores están sobrecargados, usa métodos factory estáticos con nombre que describan los argumentos.
- No te hagas el listo. Elige claridad sobre divertidos nombres.
- Escoge una palabra por concepto. Elige una palabra por concepto abstracto y pégala a ello. Por ejemplo, es confuso tener fetch, retrieve y get como métodos equivalentes en diferentes clases. Un léxico consistente es una gran ventaja para los programadores que van a usar tu código.
- Fuera juegos de palabra. Evita usar la misma palabra para dos propósitos distintos. Si tu marcas la regla de acompañas la "misma palabra por concepto" tu podrías acabar con muchas clases que tienen, por ejemplo, un método add.
- Usa nombre de la solución del dominio. Piensa que la gente que leerá tu código serán programadores, así que adelante, y usa términos de desarrollo, nombre de algoritmos, nombre de patrones, términos matemáticos, y demás. Como AccountVisitor o JobQueue
- Contexto significativo. Los nombres cortos son generalmente mejores que los largos, siempre y cueando ellos estén claros.