Citaré algunos pasajes de Implementation Patterns de Kent Beck:
Nombre de superclase simple
"[...] Los nombres deben ser cortos y contundentes. Sin embargo, para que los nombres sean precisos a veces parece requerir varias palabras. Una forma de salir de este dilema es elegir una metáfora fuerte para el cálculo. Con una metáfora en mente, incluso las palabras sueltas traen consigo una rica red de asociaciones, conexiones e implicaciones. Por ejemplo, en el marco de dibujo de HotDraw, mi primer nombre para un objeto en un dibujo era
DrawingObject . Ward Cunningham vino con la metáfora de la tipografía: un dibujo es como una página impresa y distribuida. Los elementos gráficos en una página son figuras, por lo que la clase se convirtió en Figura . En el contexto de la metáfora, Figura
es simultáneamente más corta, más rica y más precisa que DrawingObject ".
Nombre de subclase calificado
"Los nombres de las subclases tienen dos funciones. Necesitan comunicar a qué clase son y en qué se diferencian. [...] A diferencia de los nombres en las raíces de las jerarquías, los nombres de las subclases no se usan con tanta frecuencia en las conversaciones, para que sean expresivos a costa de ser concisos. [...]
Dé a las subclases que sirven como raíces de jerarquías sus propios nombres simples. Por ejemplo, HotDraw tiene un identificador de clase que presenta operaciones de edición de figuras cuando se selecciona una figura. Se llama, simplemente, Mango
a pesar de alargar Figura . Hay toda una familia de identificadores y lo más apropiado es que tengan nombres como
StretchyHandle y TransparencyHandle . Dado que Handle es la raíz de su propia jerarquía, merece un nombre de superclase simple más que un nombre de subclase calificado.
Otra arruga en la denominación de subclases son las jerarquías de múltiples niveles. [...] En lugar de anteponer ciegamente los modificadores a la superclase inmediata, piense en el nombre desde la perspectiva del lector. ¿Qué clase necesita para saber cómo es esta clase? Utilice esa superclase como base para el nombre de la subclase ".
Interfaz
Dos estilos de nombrar interfaces dependen de cómo piense en las interfaces. Las interfaces como clases sin implementaciones deben nombrarse como si fueran clases ( Nombre de superclase simple , Nombre de subclase calificado ). Un problema con este estilo de denominación es que los buenos nombres se agotan antes de llegar a las clases de nombres. Una interfaz llamada Archivo necesita una clase de implementación llamada algo como
ActualFile , ConcreteFile o (¡puaj!) FileImpl(tanto un sufijo como una abreviatura). En general, comunicar si se trata de un objeto concreto o abstracto es importante, si el objeto abstracto se implementa como una interfaz o una superclase es menos importante. Aplazar la distinción entre interfaces y superclases está bien respaldado por este estilo de denominación, lo que te deja libre para cambiar de opinión más tarde si eso se vuelve necesario.
A veces, nombrar clases concretas simplemente es más importante para la comunicación que ocultar el uso de interfaces. En este caso, anteponga los nombres de interfaz con "I". Si la interfaz se llama IFile , la clase se puede llamar simplemente Archivo .
¡Para una discusión más detallada, compre el libro! ¡Vale la pena! :)