决定在今后的代码中大量使用ASSERT,散分

jackson35296 2010-08-19 11:54:56
参数检查和错误判断经常占用一个函数一半以上的代码,搞得人很疲惫
BOOL function( char *pRecvBuf, int len )
{
if( pRecvBuf == NULL || len <= 0 )
{
SetLastErrorString(L"参数错误!");
return FALSE;
}
}
上面这样的代码写得太多了,手都写软了,从今天起改变风格,用下面的
BOOL function( char *pRecvBuf, int len )
{
ASSERT(pRecvBuf != NULL );
ASSERT(len>0);
}
还有像什么
char *p = (char*)malloc(100);
if( p == NULL )
{
...
return;
}
分配100字节的内存,出错概率估计比0.0000001%还小,今后一律ASSERT( p != NULL );

该减减负了,要不被参数判断累死了,散分
...全文
377 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmaihyyy 2011-07-05
  • 打赏
  • 举报
回复
还可以不?
zcchm 2010-10-27
  • 打赏
  • 举报
回复
我的理解是:可以在一个函数里使用ASSERT,但是前提是在调用这个函数的外层必须有一个地方做if检查。

MFC代码里大量使用ASSERT,前提是把if检查的责任交给了程序员。

cd2108006026 2010-08-19
  • 打赏
  • 举报
回复
ASSERT(pRecvBuf != NULL && len>0);

ASSERT( p != NULL && "malloc(100)失败");
jackson35296 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 coldmooon 的回复:]
我觉得,能在调试阶段完全排除的错误用assert,
极小概率错误与无法挽救的错误用verify,
不小概率错误与可以挽救的错误用自己的错误处理。
[/Quote]

有道理,多谢
hztj2005 2010-08-19
  • 打赏
  • 举报
回复
学些学习
ColdMooon 2010-08-19
  • 打赏
  • 举报
回复
我觉得,能在调试阶段完全排除的错误用assert,
极小概率错误与无法挽救的错误用verify,
不小概率错误与可以挽救的错误用自己的错误处理。
ok1234567 2010-08-19
  • 打赏
  • 举报
回复
程序本身可以100%控制(编码期间)的可以省
只要是有可能是外来(运行期间)的,最好别省
能让程序变得优雅、健壮,多写多少行代码都值!
xxd_qd 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 visualeleven 的回复:]
VERIFY();Release下
[/Quote]
Release下
#define VERIFY(f) ((void)(f))
一样没用。
y0315219 2010-08-19
  • 打赏
  • 举报
回复
UP,楼主加油
向立天 2010-08-19
  • 打赏
  • 举报
回复
话说必要的容错还是不能省的
不过有些容错确实显得多余
SuperLampard 2010-08-19
  • 打赏
  • 举报
回复
加分 加jsf
sukerm 2010-08-19
  • 打赏
  • 举报
回复
有没有源代码下载?
Eleven 2010-08-19
  • 打赏
  • 举报
回复
VERIFY();Release下
不说害怕 2010-08-19
  • 打赏
  • 举报
回复
严重支持...
Debug模式非常好用.
防御性判断有些地方还是要的.
stonewater 2010-08-19
  • 打赏
  • 举报
回复
release版assert就不起作用了
浅蓝马 2010-08-19
  • 打赏
  • 举报
回复
ASSERT在RELEASE版中会被去掉,
所以我觉得对于参数做些合法性检查还是必要的,
不然某些特殊情况下程序可能会崩溃掉的。
  • 打赏
  • 举报
回复
Wang471981125 2010-08-19
  • 打赏
  • 举报
回复
严重支持
用户 昵称 2010-08-19
  • 打赏
  • 举报
回复
看了楼主的描述,俺决定尽量不使用ASSERT,尽量自己写if
l_xiangxi 2010-08-19
  • 打赏
  • 举报
回复

写程序就是修护栏,尽量处理已知的错误,能判断的错误,一定不能少,不同意楼主的写法。

加载更多回复(24)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧