最近在弄一个考试答题系统,程序中使用了很多防御的设计
伪代码表示就是:
function CheckAnswer()
{
if(试卷不合法){
return 错误代码
}
if(试卷和答题者不对应){
return 错误代码
}
if(试卷没有全部完成){
return 错误代码
}
}
每当有一个错误的时候就直接返回了,写完的感觉就是,整个函数变成了一块一块的碎片,如果有更多的防御判断,那整个函数的就更碎了,而且 return 的错误代码太多,多到我在函数的注释中加上了错误代码列表,
like:
返回值:
-1 xxx 错误
-2 xxxxxx 错误
1 success
...
给人的感觉就是整个函数被多个 return 斩成了一段一段, 这里一只手,那里一条腿
虽然只用一个 return 会陷入嵌套海,但给人的感觉整个方法还是完整的,只是细长弯曲
是只有我一个人有这种感觉么
类似情况你们是怎么处理的
1
Sunyanzi 2016-07-05 17:36:45 +08:00 1
用 Exception ... 然后统一 catch 处理 ... return 只作为正常返回值用 ...
|
2
tairan2006 2016-07-05 19:23:41 +08:00
如果是有异常的语言话,设计好异常的层次就可以了。
不然就写一个异常的枚举,这样就不需要注释了。。 |
3
tairan2006 2016-07-05 19:24:30 +08:00 1
等等,为啥这个帖子在“情感问题”区?
|
4
cnzfq 2016-07-05 20:59:26 +08:00 via iPhone
這個節點,證明樓主和代碼愛的深沉。
祝你們幸福! |
5
armoni 2016-07-06 08:37:40 +08:00
@tairan2006 设计异常也要抛出不同 exception ,结果还是一样的,这里要做的是逻辑上合并相同类的异常,比如你第一类和第二类可以合并的
|
6
wizardforcel 2016-07-09 23:54:05 +08:00 via Android
我就是这么处理的。。你貌似有强迫症。。
比起嵌套地狱我更喜欢这种。 |