2013-10-04 151 views
1

這不是一個問題,而是一個請求註釋。日期屬性的命名約定

我一直討厭將日期包含在一個命名屬性或變量中,這是一種日期或日期時間類型。例如:

DateTime DateFileOpened {get; set;} 

對我來說,似乎我在變量名中包含數據類型。

什麼,我看中了一個使用單詞「當」到位日期,例如

DateTime WhenFileOpened {get; set;} 

一般情況下,我已經從使用的是偷了或者已經在布爾變量/屬性。

所以問題是:有沒有人有更好的日期命名約定?

回答

1

在日期時間指定「日期」時,我太不喜歡冗餘變量。

作爲替代,你可以使用:

DateTime OpenedOn { get; set; } 

命名方法是很難,如果讀者不知道的情況下的;如果此方法存在於用於存儲文件屬性的類中,則:

var fileOpenedOn = file.OpenedOn; 

會讀得很好。

0

我一般用「DATE_」作爲前綴:

date_created 
date_end 
date_deleted 
date_modified 

然後你可以把命名約定日期爲「date_FileOpened」

3

MSDN naming conventions for properties規定該屬性的名稱應該是名詞或名詞短語,DateFileOpened滿足條件但WhenFileOpened沒有。

它可以幫助在這些情況下檢查覈心.NET框架類使用的屬性名稱。下面的代碼將從所有加載的程序集提取DateTime類型的所有屬性的名稱:

foreach (var v in AppDomain.CurrentDomain.GetAssemblies() 
    .SelectMany(a=>a.GetTypes()) 
    .Where(a=>a.IsClass) 
    .SelectMany(a=>a.GetProperties()) 
    .Where(a=>a.PropertyType == typeof(DateTime))) 
      Console.WriteLine("{0}.{1}", v.DeclaringType, v.Name); 

輸出顯示到位幾個約定。

  1. ______Date____Time(實施例:System.Net.Mime.ContentDisposition.CreationDateSystem.Net.HttpWebRequest.DateSystem.Timers.ElapsedEventArgs.SignalTime)。當日期和時間都可以返回時,使用Date本身可能會引起混淆,但Time本身可以被認爲不太模糊。 (返回沒有日期時間的房產將具有返回類型TimeSpan而不是DateTime。)

  2. _____DateTime_____TimeStamp。 (例如:System.Globalization.GregorianCalendar.MinSupportedDateTime,System.Diagnostics.TraceEventCache.DateTime,System.Net.Cookie.Timestamp)。這個約定是冗長的,但是明確指出整個時間戳(Date + Time)是有意的。

  3. 也沒有。 (例如:System.Net.FtpWebResponse.LastModified,System.Globalization.DaylightTime.Start,System.Net.Cookie.Expires)。不包括名稱中的返回類型與大多數屬性名稱(String.Length,而不是String.LengthInt)一致。

由於沒有一致的方法,任何這些模式都可能被認爲是可以接受的。

然而,根據偏好,DateFileOpened建議文件只能打開一次。如果不是這種情況,像FileLastOpened或甚至簡單地LastOpened這樣的屬性名稱可能意味着DateTime返回類型,而不在屬性名稱中包含返回類型。如果無法避免,那麼像FileOpenedTime這樣的名稱與.NET指南一致,符合框架屬性名稱,並且是明確的。