2012-08-24 11 views
5

Por ejemplo, ¿es esta una buena práctica?¿Cuál es la mejor práctica para nombrar propiedades que son objetos?

private SalesOrder salesOrder; 

public SalesOrder SalesOrder 
{ 
    get { return salesOrder; } 
    set { salesOrder = value; } 
} 

O debería siempre añadir la propiedad de objeto con el objeto o BusinessObject para distinguir el tipo de propiedad de la propiedad en sí:

public SalesOrder SalesOrderBusinessObject 
{ 
    get { return salesOrder; } 
    set { salesOrder = value; } 
} 

qué importa si la propiedad es parte de una página web o una ¿objeto?

+0

En el caso que estaba pensando en su realidad es un control de usuario. El control se llama SendEmail.ascx. Entonces, el uso leería 'SendEmail.Ordene ' – Will

+0

Luego debe separar la UI de la lógica de negocios, cree una clase 'Venta' (o lo que sea). –

+0

Lo es. SalesOrder es una clase completamente separada, con su propio conjunto de propiedades y métodos de acceso a datos Estoy usando esta propiedad para realizar un seguimiento de SalesOrder en las devoluciones. – Will

Respuesta

2

Lo último es horrible. Está modelando algo que tiene un pedido de cliente, que a su vez está modelado por un objeto, no modelando algo que tiene un objeto de pedido de cliente.

"BusinessObject" sólo debe ser el nombre de algo en su código, si usted está escribiendo una herramienta para los desarrolladores para ayudarles a lidiar con los objetos de negocio.

La primera a menudo es buena.

No es bueno si pudiera haber más de un SalesOrder - incluso si uno es el "principal", está introduciendo confusión. Sin embargo, una propiedad SalesOrders que era enumerable o una colección de objetos SalesOrder es buena (cuando el plural en inglés no es del singular + 's', use el plural real en lugar de solo sumar s, a menos que sea un caso donde plural Inglés es el mismo que el singular

es menos de un gran cuando todo lo demás está relacionado con las ventas Ej esto es horrible:..

public class Sale 
{ 
    public SalesOrder SalesOrder{get;set;} 
    public SalesReference SalesReference{get;set;} 
    public decimal SalesValue{get;set;} 
    public string SalesCurrency{get;set;} 
} 

En este caso me había cortado las "ventas" de cada uno . nombre de la propiedad, pero no (necesariamente) a partir de los nombres de las clases

sin embargo, este es un caso en el que es más agradable:

public class Sale 
{ 
    public SalesOrder SalesOrder{get;set;} 
    public StockOrder StockOrder{get;set;} 
} 

En total, la forma de abordarlo es:

  1. ¿Cuál es el mejor nombre para lo que hace esta clase, que lo diferencia de lo que otras clases lo hacen (y por lo tanto, no "objeto" , "objeto de negocio", "entidad" o similar a menos que eso realmente se destaque como particularmente relevante en el caso dado).
  2. Cuál es el mejor nombre para lo que refleja la propiedad, que lo diferencia de otras propiedades.

Si terminan dando el mismo nombre en un caso particular, entonces eso está bien (a menos que sea una clase anidada, cuando es ambigua e ilegal). Si terminan dando un nombre diferente, entonces bien también.

+0

La clase es un control de usuario, SendEmail que tiene una relación 1: 1 con 'SalesOrder'. – Will

+0

Probablemente vaya con 'SalesOrder'. ¿Para qué es la clase? Para representar una orden de venta ¿Para qué es la propiedad? Para mantener la orden de venta, se trata del control. Ambas preguntas sugieren la respuesta "pedido de cliente" y aplicando las convenciones de nomenclatura de .NET a las que da 'SalesOrder' por separado en ambos casos. Si hay algo que criticar, sería el verbo "enviar" aplicado a una cosa (un control), pero es probable que sea una abreviatura perfectamente razonable. –

1

No coloque tipos de nombres. Las clases pueden cambiar los significados a lo largo de su vida y no desea que su código crezca, pero no refleja lo que ha cambiado. Esto es un remanente de los días de ASP cuando solía prefijar nombres de tabla con 'tbl' y vistas con 'vw'. Nombra las propiedades como son, en singular o en plural, y sé consistente. Simplemente no pongas la clase en el nombre. Y si busca reflejar con mayor precisión el objeto, investigue el diseño impulsado por el dominio para que su código refleje el negocio en lugar de lo que los programadores lo consideren.

Cuestiones relacionadas