A menudo me encuentro en una situación en la que tengo un concepto representado por una interfaz o clase, y luego tengo una serie de subclases/subinterfaces que lo amplían.Práctica recomendada para nombrar subclases
Por ejemplo: Un genérico "DoiGraphNode" A "DoiGraphNode" que representa un recurso A "DoiGraphNode" que representa un recurso Java A "DoiGraphNode" con una ruta asociada, etc., etc.
I puede pensar en tres convenciones de nombres, y agradecería comentarios sobre cómo elegir.
Opción 1: Comience siempre con el nombre del concepto.
Por lo tanto: DoiGraphNode, DoiGraphNodeResource, DoiGraphNodeJavaResource, DoiGraphNodeWithPath, etc.
Pro: Es muy claro lo que estoy tratando, es fácil ver todas las opciones que tengo
En contra: No muy ¿natural? ¿Todo se ve igual?
Opción 2: Poner las cosas especiales al principio.
Por lo tanto: DoiGraphNode, ResourceDoiGraphNode, JavaResourceDoiGraphNode, PathBaseDoiGraphNode, etc., etc.
Pro: Es muy claro cuando lo veo en el código
Con: encontrar que podría ser difícil, especialmente si no me acuerdo el nombre, la falta de coherencia visual
Opción 3: Colocar el material especial y eliminar parte del texto redundante
Por lo tanto: DoiGraphNode, ResourceNode, JavaResourceNode, GraphNodeWithPath
Pro: No hay mucho que escribir y leer Con: Parece que cr * p, muy inconsistente, puede entrar en conflicto con otros nombres
También elegí la tercera opción. En los dos primeros, existe el peligro de terminar en un "laberinto de nombres largos y retorcidos, todos ligeramente diferentes", en los que es difícil leerlos e incluso recordar qué nombre corresponde a qué concepto. – starblue