Convención de nomenclatura de clase C #: ¿Es clase base o clase base o clase abstracta?

StackOverflow https://stackoverflow.com/questions/826821

Pregunta

¿Cuál es el enfoque recomendado para nombrar clases base? ¿Es el prefijo del nombre del tipo con " Base " o " Resumen " ¿O simplemente lo sufijaríamos con " Base " ;?

Considere lo siguiente:

tipo: ViewModel p. MainViewModel , ReportViewModel

clase base: BaseViewModel o ViewModelBase o AbstractViewModel

Considere también:

tipo: Producto p. VirtualProduct , ExpiringProduct

clase base: BaseProduct o ProductBase o AbstractProduct

¿Cuál crees que es más estándar?

class Entity : EntityBase
{
}

o

class Entity : BaseEntity
{
}
¿Fue útil?

Solución

Hay ejemplos en el Marco con el sufijo Base, p. System.Configuration.Provider.ProviderBase , System.Web.SessionState.SessionStateStoreProviderBase .

Pero de ninguna manera todas las clases base abstractas en el Framework siguen esta convención (por ejemplo, System.Data.Common.DbParameter , System.Data.Common.DbCommand ).

Personalmente evitaría usar el sufijo a menos que quisiera enfatizar el hecho de que es una clase abstracta y sentí que de lo contrario los usuarios de la clase podrían esperar que el nombre indique una implementación concreta.

Otros consejos

Ninguno de los anteriores. Considere qué propósito proporciona su clase base; nómbralo así. Por ejemplo, la clase base de Automóvil y Bicicleta podría ser Vehículo.

Si está creando clases base solo para tener una clase base de una clase, y sin otro propósito o razón que eso, probablemente esté haciendo algo mal.

Si habla de clases base virtuales, el estándar de Microsoft es ClassnameBase (como CollectionBase)

Creo que es una cuestión de elección. Diría que si está creando muchas clases base, entonces quizás sea mejor usar BaseClassname siempre porque de esa manera SIEMPRE puede descubrir qué clases base puede comenzar a usar simplemente escribiendo Base y obteniendo el resto de la ayuda de Intellisense. ¿Qué pasaría si tuviera 20 clases Base y agregara Base como sufijo y olvidara cuál era el nombre de la clase base? ¿Desea crear un diagrama de clases primero desde VS y descubrir qué clases base están disponibles? Está bien nombrarlos ClassBase cuando son solo una o dos clases.

Lo mismo ocurre con la decisión entre GetItems y ItemsGet. Yo diría que, por lo menos, para la legibilidad, vaya por GetItems. Sigue las convenciones :)

Utilizamos BaseEntity, pero creo que es su preferencia. Frecuentemente veo al otro.

Simplemente sea coherente dentro de su contexto, ya sea su proyecto, espacio de nombres o, si es posible, su equipo. Diferentes convenciones son peores que una convención mala en mi humilde opinión.

Personalmente, recomendaría no agregar la palabra base en absoluto. Nunca se sabe cuándo tendrá que cambiar el código y ya no será el objeto base. Dicho esto, hemos hecho esto en el pasado, hemos prefijado la palabra Base en el frente. Parece que fluye mejor.

BaseEntity se parece mucho a un caso de camello: strName, bseEntity. Yo elegiría EntityBase ya que primero define el tema, lo que lo ayudará a identificar su función más rápido.

Siempre piense en alfabetizar cuando nombre cosas. Realmente no me gusta mirar un servidor SQL y cada procedimiento almacenado se llama usp [algo]. En la misma línea, no abuses de Get y Set como nombres principales para una función. En lugar de GetItems o PlaceOrder, piense en nombrarlos como ItemsGet o OrderPlace.

Entonces, en general, ClassnameBase / EntityBase sería una mejor opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top