能力值:
( LV9,RANK:420 )
|
-
-
2 楼
个人认为,应该在调用的时候检查
|
能力值:
( LV13,RANK:530 )
|
-
-
3 楼
不过我觉得比较空指针,错误参数比如 超出范围的Enum还是应该的。如果写得是一个库 给其他人分发的,当然自己的代码倒是不存在,不存在参数的问题 只要处理好用户输入。个人觉得。
|
能力值:
(RANK:1010 )
|
-
-
4 楼
被调用的函数里面作检测,不管用户给什么参数,首要的目标是不能出现异常之类的问题
如果写的好的话,就应该像API那样,返回一个int/UINT/HRESULT之类的值,
跟自己所定义的错误代码相应
如果参数不合法,就返回相应的错误代码
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
通常如果写底层库时,在强调性能的情况下,是不对输入参数做合法性检查的,比如STL中的很多要做循环操作的,就没有做边界检查之类的操作。但是如果要求稳定性,建议还在在函数内部查看指针是否为空,数组是否越界等检查
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
依赖编译器,在编译过程中检查.再就是良好的编程习惯.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我认为在函数里面对指针,和数据下表越界作检查就可以了。但是如果能从程序的调用,和设计上保证参数的合理性。可以偷懒不作检查。这种限作小程序。对大程序中的代码还是老实一点做全面检查参数。因为可能牵扯多人合作的问题。不能要求调用者,对你的限制很明确。
|
能力值:
( LV9,RANK:250 )
|
-
-
8 楼
只对传入参数的约束做个检查,比如GDI+中的那些错误状态可以学习下.
对于其他的参数的具体成员或者其他细节,可以用assert()来表明前置信任!
比如一个公共函数,需要对其参数做类型检查, 但是具体的实现的私有的实现方法时可以用assert就可以了.
另外,有的时候,你必须写好提供给用户的文档. 明确表示哪些能做,哪些不能做的情况. 有些情况则可定义为未定义的.(前提是你的实现也是严格按照这个文档来做的)
因为一些情况下,为了性能考虑,可以把选择权利交个用户.比如c运行库的一些字符函数.溢出是属于未定义行为.他不保证运行结果.
|
|
|