进入 2007 年,先后出现了两次类似于“千年虫”的边界极值问题,一个是时间上跨年引起的,另一个是文件长度而引起的。
1 月 1 号中午吃完饭不久,接到同事的电话,说是监控的程序报警,问我是什么问题。当时以为是另外同事的问题,也没放在心上。回到公司后,跟同事商量这个事,结果发现是我的程序里的问题。由于获取到的报表里的两个时间数据是没有年份的,所以我懒惰之下,直接加上 2006 作为年份。不想 2006 年 12 月 31 号晚上 12 点一过,便报警出错了。把 2006 改成 DateTime.Now.Year,暂时解决这个问题。然而这里还是需要一个推导的,在年份交替的时候,这个 DateTime.Now.Year 并不一定正确,不过一般也只可能错误一小段时间了。
另一个文件长度的问题,是因为 Pascal 那种风格的文件操作的限制。上个周末发现一个文件出现 IO 错误,开始不知道什么原因,担心是硬盘坏了,那样就麻烦大了。把文件备份了一个,然后改名让程序重新开始写,倒是正常了。后来才知道是 Pascal 风格的文件操作只支持 2G 的文件大小,而那个文件正好达到 2G,于是写不进新的数据。
对于这样的边界极值问题,实在很难完全避免。毕竟未来的发展可能远远超出现在的预计。再怎么说,一年的时间都是很短的,这是教训。除非是打算马上抛弃整个结构,否则“小号”的代码是很难得到修正的机会。
阅读(1186) | 评论(2) | 转发(0) |