【问题标题】:What should I name a DateTime property?我应该如何命名 DateTime 属性?
【发布时间】:2011-04-21 12:30:35
【问题描述】:

如果我有一个存储 DateTime 的类:

class LogEntry
{
    readonly DateTime dateTime;

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

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

我应该如何命名 DateTime 属性?或者我应该将该属性拆分为 2 个属性:1) 日期 2) 时间?

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

【问题讨论】:

  • 同意 Kwebble。回想起来,我希望我没有包含示例类,因为这个问题并不是针对特定类的。
  • 这有点倒退。当一个仅表示日期时使用 DateTime 有点不合时宜,尽管它是一个足够合理的方法,我可以理解为什么你想明确表示你这样做的时候,但我不明白需要表明“这不是我将某些东西改造成比必要类型更广泛的类型”。

标签: c# naming


【解决方案1】:

TimeStamp 可能吗?

【讨论】:

  • 我喜欢这个;根据维基百科的条目,它已经普遍认为它可能代表日期和时间,并且必须只是其中之一。
  • 应该是“-不一定只是一个或另一个”
  • 这里的小问题可能是 TimeStamp 也用于时钟计数(Ticks)属性。所以挂钟的性质并不完全明显。
【解决方案2】:

When 在日志中是个好名字。

编辑:并根据官方命名准则:“不要考虑将属性命名为与其类型相同。” 这导致

 public DateTime DateTime { get { ... } }
【解决方案3】:
LogDate
CreatedDate
EntryDate
StarDate // **

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

【讨论】:

  • @Michael,我实际上意思是是 StarDate。这是一个,嗯,笑话。
  • 我完全同意。所有属性都应该被进一步限定而不仅仅是类型名称,即使目的看起来很明显(就像 LogEntry 的情况一样)。
【解决方案4】:

假设 LogEntry 用于日志记录,以下是其他一些日志记录平台的做法:

log4net 在 LoggingEventData 结构中将其称为 TimeStamp。

NLog 在 LogEventInfo 类中将其称为 TimStamp。

Enterprise Library 在LogEntry 类中将其称为timeStamp。

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

【讨论】:

  • +1:检查巨大的商业应用程序有多大,是解决问题的最佳策略之一(如果可用)。
【解决方案5】:

任何简单、不与其他名称(例如 DateTime 本身)冲突且具有描述性的内容。由于它是一个日志条目,你可以称之为EntryTime

【讨论】:

    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      TimeStamp呢?

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

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

            如果它是一个 CreateDate,那么“CreateDate”.. 非常不言自明。

            对于日志记录,您可以使用“LoggedTimeStamp”、“LoggedDateTime”等。

            【讨论】:

              【解决方案11】:

              日期只是时间的粗略度量,将 24 小时归为同一单位。用鸡和蛋来说,时间先于日期:时间是物理实体,日期只是一个计量单位。 DateTime 数据类型有助于混淆问题并导致许多人将时间视为日期的一小部分。这是完全错误的!爱因斯坦没有谈到太空约会,是吗?

              你的名字应该描述实际发生的事情,而不是详细说明数据类型(Lezinski,或者不管他的名字,显然他没有智能感知)。

              因此,LogTime 或 EntryTime 都是最好的名称。

              混淆数据类型、测量单位和物理实体是导致程序员走上花园道路的概念性错误。

              它不是伊甸园。

              【讨论】:

                【解决方案12】:

                对该问题的评论表明该问题不应该是特定于班级的。

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

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

                public DateTime TheMomentOfTruth
                

                :)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-01-16
                  • 1970-01-01
                  • 2021-05-29
                  • 2012-08-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多