2010-10-05 26 views
7

Si tengo una clase que almacena un DateTime:¿Qué nombre debería tener una propiedad DateTime?

class LogEntry 
{ 
    readonly DateTime dateTime; 

    public LogEntry(DateTime dateTime) 
    { 
     this.dateTime = dateTime; 
    } 

    public DateTime ????? 
    { 
     get 
     { 
      return dateTime; 
     } 
    } 
} 

¿Qué debo nombrar la propiedad DateTime? ¿O debería dividir la propiedad en 2 propiedades: 1) Fecha 2) Hora?

editar: Estaba buscando un nombre de propiedad que proporcione la inferencia de que su valor es tanto una fecha como una hora, no una propiedad específica para entradas de registro (por ejemplo, DateCreated no proporciona ninguna inferencia de que también comparta el tiempo la entrada fue creada y viceversa).

+0

Acordado Kwebble. En retrospectiva, desearía no haber incluido la clase de ejemplo, porque la pregunta no debía ser específica de una clase. –

+0

Esto es un poco al revés. Es un poco complicado usar DateTime cuando uno solo significa una fecha, aunque es lo suficientemente razonable, y pude ver por qué querría dejar en claro que lo estaba haciendo cuando lo hizo, pero no veo la necesidad de señalar "esto no me está pirateando algo en un tipo más amplio que el necesario". –

Respuesta

9

TimeStamp ¿quizás?

+0

Me gusta este; de acuerdo con la entrada de la wikipedia, ya existe un consenso general de que puede representar tanto una fecha como una hora y necesariamente solo una u otra. –

+0

que debería ser "-no necesariamente" uno o el otro " –

+2

El pequeño problema aquí podría ser que TimeStamp también se usa para las propiedades de conteo de reloj (Ticks). Entonces, la naturaleza del reloj de pared no es totalmente obvia. –

7

When es un buen nombre en un registro.

Editar: y desde las guías de nombres oficiales: "Haz considera nombrar una propiedad igual que su Tipo". que se traduce en

public DateTime DateTime { get { ... } } 
+0

La referencia a las directrices de nomenclatura: http://msdn.microsoft.com/en-us/library/fzcth91k%28v=vs.71%29.aspx – dotarj

2

Cualquier cosa que sea simple, no entra en conflicto con otros nombres tales como DateTime sí mismo, y es descriptiva. Dado que es una entrada de registro, puede llamarlo EntryTime.

6
LogDate 
CreatedDate 
EntryDate 
StarDate // ** 

Elige un nombre que crees que describe mejor la mejor propiedad. Y, no, no separe la propiedad.

+7

@Michael, de hecho * quise * que fuera StarDate. Twas a, um, broma. –

+0

Oh. Lo siento por eso. –

+0

Estoy completamente de acuerdo. Todas las propiedades deberían estar mejor calificadas que solo el nombre del tipo, incluso cuando el propósito parezca deslumbrantemente obvio (como sería el caso con LogEntry). – Mels

0

Lo que tenga sentido para usted (y su equipo). Puede usar EntryDateTime ya que eso tendría sentido. Si alguna vez vas a necesitar separar la fecha y la hora, entonces valdría la pena crear métodos separados, pero no hay necesidad de dividir los dos simplemente por razones de denominación.

1

Debe elegir una convención para las marcas de tiempo en su código base y luego atenerse a eso. Por ejemplo, llamo a todas mis marcas de tiempo "updated_at" o "created_at". Otras opciones serían CreatedDate y UpdateDate.

No dividir fecha y hora en propiedades separadas. La única razón por la que haría eso sería por algún tipo de optimización para el procesamiento de alto volumen donde identifica explícitamente el análisis de la fecha como un cuello de botella.

2

A diferencia de la mayoría de las sugerencias aquí, usaría DateCreated porque es intuitivo comenzar a escribir "fecha" cuando busca la fecha de creación. Tampoco creo que haya un problema, solo aparece "fecha" en el nombre y no "hora". Eso es frecuente y aceptable.

2

¿Qué hay de TimeStamp?

+1

+1 premio de consolación por ser unos segundos demasiado lento :-) –

0

usted debe escoger un nombre descriptivo como lo hace la propiedad ...

Si es por una CreateDate luego "CreateDate" .. bastante explicativo.

Para el registro, puede utilizar "LoggedTimeStamp", "LoggedDateTime", etc.

0

Una fecha es sólo una medida de grano grueso del Tiempo, que agrupa las 24 horas en la misma unidad. Puesto en términos de pollos y huevos, el tiempo viene antes de la fecha: el tiempo es la entidad física, la fecha es solo una unidad de medida. El tipo de datos DateTime ayuda a confundir el problema y lleva a muchas personas a pensar en el tiempo como una fracción de la fecha. ¡Esto está completamente mal! Einstein no habló de Space Date, ¿o sí?

Sus nombres deben ser descriptivos de lo que realmente ocurre, en lugar de detallar el tipo de datos (Lezinski, o como sea que se llame, claramente no tiene Intellisense a su disposición).

Por lo tanto, LogTime o EntryTime serían los mejores nombres.

Confundir el tipo de datos, la unidad de medida y la entidad física son errores conceptuales que llevan a los programadores por la ruta del jardín.

Y no es el jardín del Edén.

4

Suponiendo LogEntry se utiliza para el registro, así es como algunas otras plataformas de explotación forestal hacen:

log4net llama marca de tiempo en el LoggingEventData estructura.

NLog lo llama TimStamp en la clase LogEventInfo.

Enterprise Library lo llama timeStamp en la clase LogEntry.

Microsoft lo llama DateTime en la clase TraceEventCache (TraceEventCache se pasa a las llamadas TraceListener Trace *. DateTime es la hora a la que se generó el mensaje de registro).

+0

+1: comprobar qué tan grande es la aplicación comercial, es una de las mejores estrategias para resolver problemas (cuando esté disponible). –

0

El comentario sobre la pregunta dice que la pregunta no debe ser específica de la clase.

La respuesta correcta es específica de la clase, no se relaciona con el hecho de que la propiedad es un DateTime (ya sabemos que es una fecha y una hora porque, bueno, porque es un dato y tiempo). La propiedad existirá por una razón particular, y es esa la razón que debemos considerar al nombrar.

embargo, mientras que la solicitud de un nombre de propiedad no específica de clase se está haciendo, ofrezco:

public DateTime TheMomentOfTruth 

:)

Cuestiones relacionadas