2010-10-05 18 views
7

Se ho una classe che memorizza un DateTime:Come dovrei nominare una proprietà DateTime?

class LogEntry 
{ 
    readonly DateTime dateTime; 

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

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

Cosa devo chiamare la proprietà DateTime? O dovrei dividere la proprietà in 2 proprietà: 1) Data 2) Tempo?

modifica: stavo cercando un nome di proprietà che fornisca inferenza che il suo valore sia sia una data che un'ora, non una proprietà specifica per le voci di registro (es. DateCreated non fornisce alcuna inferenza che condivide anche il tempo la voce è stata creata e viceversa).

+0

Concordato Kwebble. In retrospettiva, vorrei non aver incluso la classe di esempio, perché la domanda non doveva essere specifica della classe. –

+0

Questo è un po 'indietro. È un po 'un trucco usare DateTime quando si intende solo una data, anche se è abbastanza ragionevole, e ho capito perché vorresti chiarire che lo facevi quando lo facevi, ma non vedo la necessità di segnalare "questo non sono io che sto hackerando qualcosa in un tipo più ampio del necessario". –

risposta

9

TimeStamp forse?

+0

Mi piace questo; secondo la voce wikipedia, ha già il consenso generale sul fatto che possa rappresentare sia una data che un'ora e necessariamente solo una o l'altra. –

+0

che dovrebbe essere "-not- necessariamente solo uno o l'altro" –

+2

Piccolo problema qui potrebbe essere che TimeStamp viene utilizzato anche per le proprietà di conteggio di clock (zecche). Quindi la natura dell'orologio da parete non è del tutto ovvia. –

7

When è un buon nome in un registro.

Modifica: e dalle linee guida di denominazione ufficiale: "Do considerare di denominare una proprietà uguale al relativo Tipo". che si traduce in

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

Il riferimento alle linee guida per la denominazione: http://msdn.microsoft.com/en-us/library/fzcth91k%28v=vs.71%29.aspx – dotarj

2

Tutto ciò che è semplice, non contrasta con altri nomi come DateTime stesso, ed è descrittivo. Poiché si tratta di una voce di registro, è possibile chiamarla EntryTime.

6
LogDate 
CreatedDate 
EntryDate 
StarDate // ** 

Scegli un nome che ritieni descriva meglio la proprietà. E, no, non dividere la proprietà.

+7

@ Michael, in realtà * intendevo * che si trattava di StarDate. Era uno, um, scherzo. –

+0

Oh. Mi dispiace per quello –

+0

Sono completamente d'accordo. Tutte le proprietà dovrebbero essere ulteriormente qualificate rispetto al solo nome del tipo, anche quando lo scopo sembra ovvio (come nel caso di LogEntry). – Mels

0

Qualunque cosa abbia senso per voi (e il vostro team). Potresti usare EntryDateTime come avrebbe senso. Se siete mai andando ad avere bisogno la data e l'ora separata, allora varrebbe la pena di creare metodi separati, ma non c'è bisogno di dividere i due semplicemente per la denominazione ragioni.

1

Si dovrebbe scegliere una convenzione per i timestamp nella propria base di codice e quindi attenersi a quella. Ad esempio, chiamo tutti i miei timestamp "updated_at" o "created_at". Altre opzioni sarebbero CreateedDate e UpdateDate.

non di divisione di data e ora in edifici separati. L'unica ragione per cui si farebbe che sarebbe per un qualche tipo di ottimizzazione per l'elaborazione ad alto volume in cui si identifica in modo esplicito Data di analisi come un collo di bottiglia.

2

A differenza della maggior parte dei suggerimenti qui, utilizzerei DateCreated perché è intuitivo iniziare a digitare "data" quando si cerca la data di creazione. Inoltre, non penso ci sia un problema, solo "data" appare nel nome e non "tempo". È frequente e accettabile.

2

Che dire di TimeStamp?

+1

+1 premio di consolazione per essere un po 'troppo lento :-) –

0

si dovrebbe scegliere un nome descrittivo come quello che la struttura impone ...

Se la sua per un CreateDate poi "CreateDate" .. piuttosto auto esplicativo.

Per la registrazione, è possibile utilizzare "LoggedTimeStamp", "LoggedDateTime", ecc

0

Una data è solo una misura grana grossa del Tempo, che grumi 24 ore nella stessa unità. Metti in termini di polli e uova, il tempo arriva prima della data: il tempo è l'entità fisica, la data è solo un'unità di misura. Il tipo di dati DateTime aiuta a confondere il problema e porta molte persone a pensare al tempo come una frazione di data. Questo è completamente sbagliato! Einstein non parlava di Space Date, vero?

I vostri nomi dovrebbero essere descrittivi di ciò che effettivamente accade, al contrario di dettagliare il tipo di dati (Lezinski, o qualunque sia il suo nome, chiaramente non aveva intellisense a sua disposizione).

Quindi LogTime o EntryTime sarebbero i migliori nomi.

Confondere il tipo di dati, l'unità di misura e l'entità fisica sono errori concettuali che portano i programmatori lungo il percorso del giardino.

E non è il giardino dell'Eden.

4

Supponendo LogEntry viene utilizzato per la registrazione, ecco come alcune altre piattaforme di registrazione lo fanno:

log4net chiama TimeStamp nel LoggingEventData struct.

NLog lo chiama TimStamp nella classe LogEventInfo.

Enterprise Library lo chiama timeStamp nella classe LogEntry.

Microsoft lo chiama DateTime nella classe TraceEventCache (TraceEventCache viene passato nelle chiamate TraceListener Trace *. DateTime è l'ora in cui è stato generato il messaggio di registrazione).

+0

+1: Controllare come un'applicazione commerciale enorme lo fa, è una delle migliori strategie per risolvere i problemi (quando disponibili). –

0

Il commento sulla domanda dice che la domanda non dovrebbe essere specifica di classe.

La risposta corretta è specifica per la classe, non si riferisce al fatto che la proprietà è un DateTime (sappiamo già che è una data e un'ora perché, beh, perché si tratta di dati e ora). La proprietà esisterà per una ragione particolare, ed è questa la ragione per cui dovremmo prendere in considerazione quando nominiamo.

Eppure, mentre la richiesta di una non-classe di nome della proprietà specifica è stato fatto, offro:

public DateTime TheMomentOfTruth 

:)

Problemi correlati