Today when debugging a program I found a error due to a contant number. In that program, we need making
a backup file name from a file name. Those file names are so regular, such as, 007_20061228.csv or
0000007_20061228.csv. Yes, it is consist of a id and date. If a file is used in BACnet protocol, the length
of its id is 7, otherwise, it is 3. The two kinds of file added a suffix "_REVXXX" and their backup file name
are made. It is so easy.
However, I found the program can not make a correct backup file name from a file based on BACnet protocol. Why?
It is impossible that the program hates BACnet protocol. My two workmates and I checked my sources again and again.
I suspected the bug is out of my codes. After checking a get_back_file() function which is written by other workmate,
I found where is bug.
When slicing out a file name, that my workmate used a constant 12. If a file name is 007_20061228.csv, it is right.
But it is wrong when a file name is 0000007_20061228.csv. It will make the result like 0000007_2006.csv. There are
worse case. When the program deleting old files, it considered 0000007_2006.csv as 0000007_20060101.csv. As a matter
of fact, most of OS also adapt this default date.
So, its backup file is not made.
在调试程序过程中发现了一个由于常数使用不当导致的错误,该程序用于从原始文件名生成备份文件名。问题出现在处理基于BACnet协议的文件时,这类文件ID长度为7位,而非标准的3位。通过团队合作定位到了问题所在,并揭示了在切分文件名时硬编码的常数12不适用于所有情况。
1119

被折叠的 条评论
为什么被折叠?



