CodeSOD:在匈牙利约会 笔记

CodeSOD:在匈牙利约会

作者对代码中使用匈牙利命名法表示强烈反对。他们指出了其误用及日期处理的不良示例。具体代码片段中,变量sCDate2由隐藏字段Hdn_SelectedDate初始化。前缀s暗示其为字符串,但该变量实际存储的是日期,而后缀CDate2则未作解释。另一个隐藏字段Hdn_SelectedShifts以双精度浮点数形式存储时间,其中 10.5 代表 10:30。该值随后通过DateTime.FromOADate进行操纵。作者深入探讨了 OLE Automation 的历史及其奇特的日期表示方式,该方式以 1899 年 12 月 30 日为偏移基准。此系统继承了一个 Excel 缺陷,即将 1900 年视为闰年。代码随后将代表小时的双精度浮点数转换为 OADate,提取时间部分,并与日期字符串组合。作者指出,C# 的AddHours方法本可提供更简洁的解决方案。此外,时间数据被手动编码为浮点数以用于下拉列表,而非采用更常规的格式。这一繁琐的过程进一步强化了作者对匈牙利命名法的总体反感。