程序鲁棒性的误区
来源:互联网 发布:传奇3挂机软件 编辑:程序博客网 时间:2024/04/28 22:35
在参加面试的过程中,面试官经常会要求你写一段程序,实现某某功能,他们的评分标准里往往有一条如何处理边界条件,而且这个比例占的很大。这本来没错,但是出题者往往事先不暗示你。不可否认,如何处理异常情况是一个非常重要的能力,但是,如此考察的方式,存在着非常大的误区:
1. 函数是实现约定的功能。给定一个函数,不支持异常情况不表明该函数鲁棒性不强,可以在函数的规范中注明,比如传入参数不会空。
2. 函数有异常判断,不表明函数鲁棒性好。在现实的程序中,在哪一层处理异常情况是非常有讲究的。
一个简单的例子(忽略不好的命名习惯):
process() {
param = getParam();
step1(param);
step2(param);
....
stepn(param);
}
假设step1, step2.... stepn是函数process的一系列步骤,如果参数异常(比如为空),应该不执行step1-n,那么应该怎么写process, step1,... stepn的异常判断呢?
是在每个stepx函数里加一句 if(invalidParam(param)) return; 好呢?还是在process里加这一句好呢?
显然是process里 ,而即使在step函数里加了异常判断,你的程序不会变得更健壮,反而更累赘。
这个例子表明了函数是一个约定,函数的调用者必须遵守这个约定,因此像写一个f(int * p) 之类的,是否需要判断p == null完全取决于对函数的定义,而不是对于每个函数,都去做无谓的判断,尤其是内部使用函数,更多的时候需要调用者知道调用场景。
1. 函数是实现约定的功能。给定一个函数,不支持异常情况不表明该函数鲁棒性不强,可以在函数的规范中注明,比如传入参数不会空。
2. 函数有异常判断,不表明函数鲁棒性好。在现实的程序中,在哪一层处理异常情况是非常有讲究的。
一个简单的例子(忽略不好的命名习惯):
process() {
param = getParam();
step1(param);
step2(param);
....
stepn(param);
}
假设step1, step2.... stepn是函数process的一系列步骤,如果参数异常(比如为空),应该不执行step1-n,那么应该怎么写process, step1,... stepn的异常判断呢?
是在每个stepx函数里加一句 if(invalidParam(param)) return; 好呢?还是在process里加这一句好呢?
显然是process里 ,而即使在step函数里加了异常判断,你的程序不会变得更健壮,反而更累赘。
这个例子表明了函数是一个约定,函数的调用者必须遵守这个约定,因此像写一个f(int * p) 之类的,是否需要判断p == null完全取决于对函数的定义,而不是对于每个函数,都去做无谓的判断,尤其是内部使用函数,更多的时候需要调用者知道调用场景。
- 程序鲁棒性的误区
- 程序界面上的一些误区
- Java编程语言程序的认识误区
- Java编程语言程序的认识误区
- 用gdb调试ncurses程序的误区
- Java编程语言程序的认识误区
- Java编程语言程序的认识误区
- 程序学习过程中存在的误区
- 写程序误区
- 黑莓新手的误区--关于程序后台运行
- v880+ 手动关闭程序?安卓系统的使用误区
- php学习误区:不要盲目的去读程序
- 第一行java程序误区
- “IT程序猿”是怎样练成的? 之 习惯培养的“四大”误区
- “IT程序猿”是怎样练成的? 之 习惯培养的“四大”误区
- 建模的误区
- 学习.Net的误区
- auto_ptr的使用误区
- 蒋门神有力 水浒
- javascipt设为首页,收藏,打印代码
- 移动鼠标实现链接文本框提示效果
- 武松一夜辛苦 水浒传
- 武松看时 水浒
- 程序鲁棒性的误区
- 张青即便请出前面客 水浒传
- 张青道 水浒
- 且说武松在张青家里 水浒
- 武松临行 水浒
- 一些不错的技术网站,持续更新中。。。
- 武行者看了 水浒传
- 当时两个斗了十数合 水浒
- 武行者过得那土冈子 水浒