正在工作,在修前人的 code。
假设现在有 function F 和 function G,
function F 内执行的程式码会呼叫 function G 并将某个指标作为参数传入 G
想请问一下高手大大们,空指标的检查一般都在:
1) function F 要传入该指标到 function G 前
2) 收到该指标的 function G 的开头
3) 1、2 两者皆要
的哪个时机检查最好?
又有什么优缺点?
因为选方案 1 的话,要是某些时候呼叫 G 前忘记检查就会出事,而且程式码满冗赘的;
可是如果用方案 2 的话,在某些情况下,
会呼叫 G 的 function F 可能已经存取过该指标,等于先保证不会为空,
那 2 的作法就等于每次都多一道检查行为。
方案 3 没看过,可能老鸟跟菜鸟没串好 @@?
那有约定成俗的 coding rule 吗?
一般都怎么写比较好?
作者:
johnpage (johnpage)
2019-09-18 16:37:002
作者:
Lipraxde (Lipraxde)
2019-09-18 17:50:00如果不是预期会传 nullptr 的话会用 assert 检查吧
作者:
rodion (r-kan/reminder)
2019-09-18 18:12:00按架构layer区分是否检查null: 检查只需在layer的"接口"
这要看责任的分配, 正常是 3, 不过这要看你的指标是当 in/out param 哪一个, 给 nullptr 算不算例外, 这要先从 API design 开始讲起
作者:
Gway (我爱的你 也爱我 好吗?)
2019-09-18 23:27:00惯例是2 确保fun 本身有排错能力是基本
作者: kevin14144 2019-09-19 00:13:00
需看情况。 就程式稳定度考量。选2 :当G方法覆用时,能够保证不产生例外。 效能上:若F方法多次呼叫G方法这种情况 就可能需要考虑移除G方法内的判断。 另外还有一种做法:就是保证不产生nullptr. ~
2, 但是如果你设计的function会传null出来,你应该检讨不是设计错误
作者:
ketrobo (猫萝卜)
2019-09-20 01:35:00我选择caller检查优先,在遇到检查nullptr这样的抉择之前,我会更优先检查使用指标的必要性,如果能以reference解决,或是null object pattern替代,则不使用pointer…