处理 DateTime 时的纯函数警告
维基百科目前定义了一个纯函数,如下所示:
- 在给定相同参数值的情况下,该函数始终评估相同的结果值。功能结果值不能取决于程序执行过程中或程序的不同执行之间可能发生变化的任何隐藏信息或状态,也不依赖于来自 I / O 设备的任何外部输入。
- 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到 I / O 设备
作为开发人员,你需要了解纯方法,并且你会在许多方面偶然发现这些问题。我看到很多初级开发人员正在使用 DateTime 类方法。其中很多是纯粹的,如果你不知道这些,你可能会感到惊讶。一个例子:
DateTime sample = new DateTime(2016, 12, 25);
sample.AddDays(1);
Console.WriteLine(sample.ToShortDateString());
鉴于上面的示例,可以预期打印到控制台的结果为'26 / 12/2016’,但实际上你最终会得到相同的日期。这是因为 AddDays 是纯方法,不会影响原始日期。要获得预期的输出,你必须将 AddDays 调用修改为以下内容:
sample = sample.AddDays(1);