尽量用库函数
来源:互联网 发布:发论文数据可以造假吗 编辑:程序博客网 时间:2024/05/22 11:42
文件:shark/src/dvbc/drivers/data/data.c
函数:Get_FactotyID
版本:1.28
#define FactoryID_addr 0x40002040
#define FactoryID_length 17
int Get_FactotyID(void)
{
int ercode = 0;
ITI_BYTE FactoryID[FactoryID_length];
int number=0,i=0;
ercode = cfsFileRead(FactoryID_addr, (void *)FactoryID, FactoryID_length);
if(ercode == 0)
for(i=10;i<FactoryID_length;i++)
{
if((FactoryID_length-i-1)>0)
{
number += (int)(FactoryID[ i ] - '0');
number *= 10;
}
else
number += (int)(FactoryID[ i ] - '0');
//printf( "Get_FactotyID =%d,FactoryID[ i ]=%d/n",number,FactoryID[ i ]);
}
else
number = 2701;
return number;
}
/////// step0: 合并重复的代码
for(i=10;i<FactoryID_length;i++)
{
number += (int)(FactoryID[ i ] - '0');
if((FactoryID_length-i-1)>0)
number *= 10;
}
/////// step1: 去除不需要的判断
for(i=10;i<FactoryID_length;i++)
{
number *= 10;
number += (int)(FactoryID[ i ] - '0');
}
/////// step2: 尽量用库函数
number = strtoul(&FactoryID[10], NULL, 10);
由于FactoryID不能保证有结束符,所以这样改引入了一个bug。
/////// 最终修改
ITI_BYTE FactoryID[FactoryID_length+1];
FactoryID[FactoryID_length] = '/0';
number = strtoul(&FactoryID[10], NULL, 10);
或者用strtol, strtoull, atoi, atol, atoll来代替
总结:
如果已有相同功能的函数:
尽量用标准的C库,而不是自己写代码;既可最大限度的保证代码的正确性,又能节约开发时间。
尽量用本公司已有的函数、库,可进一步验证他们,以提高本公司的软件质量。
尽量让自己的模块的函数标准化,library化。提高其移植性,重用度。移植性越高,重用的地方越多;重用的地方越多,软件验证的机会就越多;验证的机会就越多,发现bug越快,可靠性越高,可信度越高,自然用的就越多。如此形成良性循环。
额外:
为什么要在函数开始时对变量ercode,i赋值?
- 尽量用库函数
- 尽量用strncpy
- 尽量用绝对路径
- spring 尽量用 @Autowired
- 尽量少用GetComponent
- 尽量用iterator代替const_iterator
- 尽量不要用Magic Number
- 尽量用button代替submit
- mac开发尽量用oc
- 尽量用++i 而不是 i++
- 好用的库函数
- 标签栏用库函数
- 库函数
- 库函数
- 库函数
- 库函数
- 库函数
- 库函数
- bit操作的问题
- SQL Server索引管理之六大铁律
- (size_t)&(((s *)0)->m)的理解
- Java解决各种中文乱码问题(1)get和post请求
- 生成测试数据-3-T-SQL系列
- 尽量用库函数
- 汇编语言源程序的书写格式
- 用CSS控制浏览器滚动条样式源代码
- 二维数组 &amp; 二级指针
- 标识符(函数名、变量名)的选择
- 大小写转化
- winform--记住密码
- 中国神话
- 远程唤醒