这不是一个问题,而是一个评论请求。
我一直讨厌在命名属性或变量中包含 date ,这是一种日期或日期时间。例如:
DateTime DateFileOpened {get; set;}
对我来说,似乎我在变量名中包含了数据类型。
我已经确定的是使用“何时”代替日期,例如
DateTime WhenFileOpened {get; set;}
通常,我在布尔变量/属性中使用Is或Has来窃取这个。
所以问题是:是否有人有更好的日期命名约定?
答案 0 :(得分:4)
在DateTime变量中指定“Date”时,我也不喜欢冗余。
作为替代方案,您可以使用:
DateTime OpenedOn { get; set; }
如果读者不了解上下文,则命名方法很难;如果此方法存在于用于存储文件属性的类中,则:
var fileOpenedOn = file.OpenedOn;
读得不错。
答案 1 :(得分: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);
输出显示了几个惯例。
______Date
,____Time
(示例:System.Net.Mime.ContentDisposition.CreationDate
,System.Net.HttpWebRequest.Date
,System.Timers.ElapsedEventArgs.SignalTime
)。当可以返回日期和时间时,Date
本身的使用可能会令人困惑,但Time
本身可以被认为不那么模糊。 (返回没有日期的时间的属性的返回类型为TimeSpan
,而不是DateTime
。)
_____DateTime
,_____TimeStamp
。 (示例:System.Globalization.GregorianCalendar.MinSupportedDateTime
,System.Diagnostics.TraceEventCache.DateTime
,System.Net.Cookie.Timestamp
)。这个约定很冗长,但是明确的是整个时间戳(日期+时间)是有意的。
都不是。 (示例:System.Net.FtpWebResponse.LastModified
,System.Globalization.DaylightTime.Start
,System.Net.Cookie.Expires
)。不包括名称中的返回类型与大多数属性名称(String.Length
,而不是String.LengthInt
)一致。
由于没有一致的方法,任何这些模式都可以被认为是可接受的。
然而,作为优先选择,DateFileOpened
表明文件只能打开一次。如果不是这种情况,则FileLastOpened
或甚至简称LastOpened
等属性名称可能意味着DateTime
返回类型,而不在属性名称中包含返回类型。如果无法避免,那么像FileOpenedTime
这样的名称与.NET指南一致,与Framework属性名称一致,并且是明确的。
答案 2 :(得分:-2)
我通常使用" date _"作为前缀:
date_created
date_end
date_deleted
date_modified
然后您可以将日期的命名约定作为" date_FileOpened"