Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该给DateTime属性命名什么?_C#_Naming - Fatal编程技术网

C# 我应该给DateTime属性命名什么?

C# 我应该给DateTime属性命名什么?,c#,naming,C#,Naming,如果我有一个存储日期时间的类: class LogEntry { readonly DateTime dateTime; public LogEntry(DateTime dateTime) { this.dateTime = dateTime; } public DateTime ????? { get { return dateTime; } }

如果我有一个存储日期时间的类:

class LogEntry
{
    readonly DateTime dateTime;

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

    public DateTime ?????
    {
        get
        {
            return dateTime;
        }
    }
}
DateTime属性应该命名为什么?或者我应该将该属性拆分为两个属性:1)日期2)时间


编辑:我正在寻找一个属性名,该属性名可以推断其值是日期和时间,而不是特定于日志条目的属性(例如,DateCreated不提供任何推断,即它也共享创建条目的时间,反之亦然)。

在日志中是一个好名称时

编辑:从Offic命名指南:“<强> do/Stand >考虑将一个属性命名为与它的类型相同。 这导致

 public DateTime DateTime { get { ... } }

任何简单的名称都不会与其他名称冲突,例如
DateTime
本身,并且是描述性的。因为它是一个日志条目,所以可以称之为
EntryTime

LogDate
CreatedDate
EntryDate
StarDate // **

选择一个您认为最能描述属性的名称。而且,不,不要分割财产。

任何对您(和您的团队)有意义的事情。您可以使用
EntryDateTime
,因为这是有意义的。如果您需要将日期和时间分开,那么创建单独的方法是值得的,但是没有必要仅仅因为命名的原因而将两者分开。

您应该在代码库中为时间戳选择一个约定,然后坚持这个约定。例如,我将所有时间戳称为“updated_at”或“created_at”。其他选项为CreatedDate和UpdateDate


不要将日期和时间分割为单独的属性。这样做的唯一原因是对高容量处理进行某种优化,在这种优化中,您明确地将日期解析识别为瓶颈

与这里的大多数建议不同,我会使用
DateCreated
,因为在查找创建日期时输入“date”是很直观的。我也不认为有什么问题,只有“日期”出现在名称中,而不是“时间”。这是经常发生的,也是可以接受的。

时间戳
也许吧?

那么
时间戳
呢?

您应该选择一个描述性名称作为属性的用途

如果是CreateDate,则为“CreateDate”。。非常不言自明


对于日志记录,可以使用“LoggedTimeStamp”、“LoggedDateTime”等。日期只是时间的粗略度量,它将24小时集中到同一个单位中。就鸡和蛋而言,时间先于日期:时间是物理实体,日期只是计量单位。DateTime数据类型有助于混淆问题,并导致许多人将时间视为日期的一部分。这是完全错误的!爱因斯坦没有提到太空日期,是吗

您的名字应该描述实际发生的情况,而不是详细说明数据类型(Lezinski,或其他他的名字,显然没有intellisense可供使用)

所以LogTime或EntryTime都是最好的名字

混淆数据类型、度量单位和物理实体是概念上的错误,会导致程序员走上花园之路


而且它不是伊甸园。

假设LogEntry用于日志记录,下面是一些其他日志记录平台的实现方式:

log4net在结构中调用它的时间戳

NLog在课堂上称之为TimStamp

企业库在类中调用它timeStamp


Microsoft在类中称之为DateTime(TraceEventCache被传递到TraceListener Trace*调用中。DateTime是生成日志消息的时间)。

关于该问题的评论说,该问题不应是特定于类的

尽管正确的答案是特定于类的,但它与属性是DateTime这一事实无关(我们已经知道它是日期和时间,因为它是数据和时间)。属性将以特定的原因存在,这就是我们应该考虑命名时的原因。

尽管如此,在请求非特定于类的属性名称时,我提供:

public DateTime TheMomentOfTruth

:)

@Michael,我实际上是想说那是StarDate。这是个笑话,我完全同意。所有属性都应该被进一步限定,而不仅仅是类型名,即使其目的看起来非常明显(比如日志条目);根据维基百科的条目,它已经有了一个普遍的共识,即它可能同时代表一个日期和一个时间,并且必然只代表一个或另一个。这里的小问题可能是时间戳也用于时钟计数(Ticks)属性。因此,挂钟的性质并不完全明显。奎布尔同意。现在回想起来,我希望我没有包括示例类,因为这个问题不是特定于类的。这有点倒退。使用DateTime是一种黑客行为,当一个只意味着一个日期时,虽然这是一种合理的行为,我可以理解为什么你想清楚地表明你这么做了,但我不认为有必要发出信号“这不是我将某件事黑客化为超出必要范围的类型”。+1:检查有多大的商业应用程序这么做,是解决问题的最佳策略之一(如果可用)。参考命名指南: