write solid code:不要使用output memory作为函数内使用的buffer
2009-08-18 08:55
405 查看
1.不要使用output memory作为函数内使用的buffer,要使用内部buffer,然后cpy出去
错误实例:
void UnsToStr(unsigned u,char *str)
{
char *pch;
/* u超出范围吗?使用UlongToStr… */
ASSERT(u<= 65536);
/* 将每一位数字自后向前存储
* 字符串足够大以便能存储u的最大可能值
*/
pch = &str[5];
*pch = ‘/0’;
do
*--pch = u%10 + ‘0’;
while((u/=10)>0);
// strcpy(str,pch);
}
正确
void UnsToStr(unsigned u,char *str)
{
char strDigits[6];
char *pch;
/* u超出范围了吗?使用UlongToStr… */
ASSERT(u <= 65536);
pch = &strDigits[6];
*pch = ‘/0’;
do
*--pch = u % 10 + ‘0’;
while((u/=10)>0);
strcpy(str,pch);
}
2.不要编写寄生函数,不要编写依赖于另一个函数内在实现的函数
错误实例
/* FILL 填充某一存储域 */
void Memset(byte *pb,size_t size,byte b)
{
if(size>0)
{
*pb = b;
memcpy(pb,pb+1,size-1);
}
}
这样的程序对于RAM没错,但对于 memoryI/o(机械手)ROM,就不对了
错误实例:
void UnsToStr(unsigned u,char *str)
{
char *pch;
/* u超出范围吗?使用UlongToStr… */
ASSERT(u<= 65536);
/* 将每一位数字自后向前存储
* 字符串足够大以便能存储u的最大可能值
*/
pch = &str[5];
*pch = ‘/0’;
do
*--pch = u%10 + ‘0’;
while((u/=10)>0);
// strcpy(str,pch);
}
正确
void UnsToStr(unsigned u,char *str)
{
char strDigits[6];
char *pch;
/* u超出范围了吗?使用UlongToStr… */
ASSERT(u <= 65536);
pch = &strDigits[6];
*pch = ‘/0’;
do
*--pch = u % 10 + ‘0’;
while((u/=10)>0);
strcpy(str,pch);
}
2.不要编写寄生函数,不要编写依赖于另一个函数内在实现的函数
错误实例
/* FILL 填充某一存储域 */
void Memset(byte *pb,size_t size,byte b)
{
if(size>0)
{
*pb = b;
memcpy(pb,pb+1,size-1);
}
}
这样的程序对于RAM没错,但对于 memoryI/o(机械手)ROM,就不对了
相关文章推荐
- 在COM接口中不要使用同时出现只是大小写不同的名字作为属性名、函数名或者参数名
- 在code中尽量不要直接使用READ_ONCE和WRITE_ONCE。反而应该用atomic_read和atomic_set 替换
- 1.不要使用可变对象作为函数默认值
- python里函数怎么样使用元组或字典作为参数调用
- 指针数组作为函数参数的使用问题
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 请不要对Boost Format使用Byte作为参数
- 不要使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数:
- 切勿使用:指向局部变量的指针作为函数的返回指针!
- Kotlin语言学习之将函数作为参数传递,使用双冒号::引用其他方法
- python使用函数作为参数
- step1 writeup —— 输入作为函数参数
- 最简单的IOS Block与协议 block作为函数参数的使用
- LR 解压缩函数(wgzMemDecompressBuffer)失败 Code=-5
- C++中使用引用作为函数参数的优点
- 使用函数模版作为函数参数
- PCL使用类成员函数作为pclvisualizer的回调函数
- 关于java中synchronized的迷思,建议只作为函数修饰符使用
- 翻译《有关编程、重构及其他的终极问题?》——28.如果你可以使用简单的函数就不要使用宏
- 使用JSON作为函数的参数的优缺点