关于程序的健壮性

hityct1 2008-12-31 01:33:45

请做过大型软件或在正规公司工作的人谈谈。自己的思路比较乱,而且问的问题比较幼稚。

1)你觉得自己的程序够健壮吗?
2)使用错误处理多还是异常处理多?
我觉得要根据自己使用的库函数,如果库函数使用的是错误处理(如:socket api),就用错误处理;如果库函数使用的是异常,就用异常处理。如果好几个库混在一起使用,该怎么办?你会封装一下库函数,使所有库函数都使用异常?
3)一个大型软件,是否需要建立许多自定的异常类?
4)你是否会对每个可能出错或有异常的地方都进行处理?
一些不太容易出错的地方,似乎不做检查,如核心对象(CreateEvent),似乎没人检查创建是否成功。
5)new int;
你是否会为它检查申请空间成功吗?如果检查,你会怎么处理?再申请一次?
只是申请一个整型的空间,如果这都不成功,我想程序要完蛋了,程序做错误处理(显示出现什么错误)的能力都没有了,检查毫无意义;也许该重启操作系统了。
6)你是否感觉:本来挺简单的程序,加上错误或异常处理就显得很乱。你怎么使程序看起来有条理,谈谈经验吧。

不是针对上面的几个问题。随便谈谈吧。
...全文
1087 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
S314324153 2010-02-23
  • 打赏
  • 举报
回复
平时基本埋头写程序,没怎么认真去研究过这些问题,看来我这样是不行的阿
lc19890326 2009-01-01
  • 打赏
  • 举报
回复
程序写出来容易 要健壮与高效实在很难 学习
fibbery 2009-01-01
  • 打赏
  • 举报
回复
1)你觉得自己的程序够健壮吗?
答:健壮
2)使用错误处理多还是异常处理多?
我觉得要根据自己使用的库函数,如果库函数使用的是错误处理(如:socket api),就用错误处理;如果库函数使用的是异常,就用异常处理。如果好几个库混在一起使用,该怎么办?你会封装一下库函数,使所有库函数都使用异常?
答:在同一个系统中,不管是用错误处理还是异常,在临界的接口界面要做到统一,即要么错误处理,要么异常处理。所谓界面统一,即,如果系统采用错误处理,对于调用的库如果采用异常,那么,对库进行封装,在封装的函数内捕获异常,返回错误代码,统一到错误处理界面;反之亦然。
3)一个大型软件,是否需要建立许多自定的异常类?
答:这个应该鉴于应用框架的建立,不仅是大型应用,只要是具有一定的设计的系统,都可以考虑用还是不用自定义的异常类。自定义的异常类,不外乎是对异常的进一步分类。
4)你是否会对每个可能出错或有异常的地方都进行处理?
一些不太容易出错的地方,似乎不做检查,如核心对象(CreateEvent),似乎没人检查创建是否成功。
答:基本上是这样。
5)new int;
你是否会为它检查申请空间成功吗?如果检查,你会怎么处理?再申请一次?
只是申请一个整型的空间,如果这都不成功,我想程序要完蛋了,程序做错误处理(显示出现什么错误)的能力都没有了,检查毫无意义;也许该重启操作系统了。
答:一般情况下,我不会new一个int;一般情况下,我都会判断是否为NULL;对于stl中的new,如果失败会抛出异常,和普通意义下的new不一样,一般我不会捕捉这个异常,除非是一个很大的内存空间的申请。
6)你是否感觉:本来挺简单的程序,加上错误或异常处理就显得很乱。你怎么使程序看起来有条理,谈谈经验吧。
答:合理的任务划分,再给函数选择一个最为贴切的名字,能够使你的函数调用,在逻辑上一目了然,能够准确的知道你在做什么;看到你的函数内部的代码,也能很清楚的知道你是如何在做。不管你是使用错误处理还是异常处理。其中,我还有一个习惯,就是在每一个步骤之前,写一行醒目的注释,标志此段代码的具体要做什么,从颜色(注释的颜色)上也能够知道,该部分代码大致分了几个部分。

新年快乐。2009年的第一个属于我的回复。呵呵……
liberpc 2009-01-01
  • 打赏
  • 举报
回复
学习中...
lgccaa 2009-01-01
  • 打赏
  • 举报
回复
up
up
up
ltc_mouse 2009-01-01
  • 打赏
  • 举报
回复
学习~
lin12345 2009-01-01
  • 打赏
  • 举报
回复
还在大学中,学习了
xuruichen 2009-01-01
  • 打赏
  • 举报
回复
1)你觉得自己的程序够健壮吗?
答:健壮
2)使用错误处理多还是异常处理多?
我觉得要根据自己使用的库函数,如果库函数使用的是错误处理(如:socket api),就用错误处理;如果库函数使用的是异常,就用异常处理。如果好几个库混在一起使用,该怎么办?你会封装一下库函数,使所有库函数都使用异常?
答:在同一个系统中,不管是用错误处理还是异常,在临界的接口界面要做到统一,即要么错误处理,要么异常处理。所谓界面统一,即,如果系统采用错误处理,对于调用的库如果采用异常,那么,对库进行封装,在封装的函数内捕获异常,返回错误代码,统一到错误处理界面;反之亦然。
3)一个大型软件,是否需要建立许多自定的异常类?
答:这个应该鉴于应用框架的建立,不仅是大型应用,只要是具有一定的设计的系统,都可以考虑用还是不用自定义的异常类。自定义的异常类,不外乎是对异常的进一步分类。
4)你是否会对每个可能出错或有异常的地方都进行处理?
一些不太容易出错的地方,似乎不做检查,如核心对象(CreateEvent),似乎没人检查创建是否成功。
答:基本上是这样。
5)new int;
你是否会为它检查申请空间成功吗?如果检查,你会怎么处理?再申请一次?
只是申请一个整型的空间,如果这都不成功,我想程序要完蛋了,程序做错误处理(显示出现什么错误)的能力都没有了,检查毫无意义;也许该重启操作系统了。
答:一般情况下,我不会new一个int;一般情况下,我都会判断是否为NULL;对于stl中的new,如果失败会抛出异常,和普通意义下的new不一样,一般我不会捕捉这个异常,除非是一个很大的内存空间的申请。
6)你是否感觉:本来挺简单的程序,加上错误或异常处理就显得很乱。你怎么使程序看起来有条理,谈谈经验吧。
答:合理的任务划分,再给函数选择一个最为贴切的名字,能够使你的函数调用,在逻辑上一目了然,能够准确的知道你在做什么;看到你的函数内部的代码,也能很清楚的知道你是如何在做。不管你是使用错误处理还是异常处理。其中,我还有一个习惯,就是在每一个步骤之前,写一行醒目的注释,标志此段代码的具体要做什么,从颜色(注释的颜色)上也能够知道,该部分代码大致分了几个部分。



厉害,我现在能写出来就是老天照应了。健壮性以后再谈。

希望能成为楼主一样的人物。
jieao111 2009-01-01
  • 打赏
  • 举报
回复
看些专门的书籍吧
airtrack 2009-01-01
  • 打赏
  • 举报
回复
up
Lilly56 2009-01-01
  • 打赏
  • 举报
回复
你觉得自己的程序够健壮吗?
我的经验是程序交给用户后,要过三个月我才没有问题返馈电话,问题包括Bug和需求变更,如果程序不够健壮就会感改起来就会很恼火,便想办法使它更为健壮.每完成一个项目就会更上一层楼.
blueink_200451 2009-01-01
  • 打赏
  • 举报
回复
能够采用异常处理解决的,尽量使用异常处理
agaric 2009-01-01
  • 打赏
  • 举报
回复
还是要看系统的规模的用途,就我自己的做的东西来可那,一般会为了简单而减少一些错误的处理。但是对外部程序的使用或者说是外部提供的参数,都会做一定的检查,自己系统内部的,一旦有意外的情况出现,一般直接就panic
Alix-Lei 2009-01-01
  • 打赏
  • 举报
回复
异常处理用的还是不是很习惯,看来还要多用啊!
herman~~ 2009-01-01
  • 打赏
  • 举报
回复
1)你觉得自己的程序够健壮吗?
这个是挺泛的问题,不同标准来衡量:如果按照工业级别应用的标准确实还不够健壮,但如果是小规模的应用目前算健壮

2)使用错误处理多还是异常处理多?
我觉得要根据自己使用的库函数,如果库函数使用的是错误处理(如:socket api),就用错误处理;如果库函数使用的是异常,就用异常处理。如果好几个库混在一起使用,该怎么办?你会封装一下库函数,使所有库函数都使用异常?

目前使用的大多是 错误处理,结合错误日志分析。没有很特别的理由,可以说是不喜欢在代码里面放一堆try catch,不仅仅会影响代码可读性而且在一定程度上影响了效率

3)一个大型软件,是否需要建立许多自定的异常类?

个人觉得不是很必要
4)你是否会对每个可能出错或有异常的地方都进行处理?
一些不太容易出错的地方,似乎不做检查,如核心对象(CreateEvent),似乎没人检查创建是否成功。

核心对象的创建确实如果做创建是否成功的检查,但不见得需要在所有地方做异常处理
5)new int;
你是否会为它检查申请空间成功吗?如果检查,你会怎么处理?再申请一次?
只是申请一个整型的空间,如果这都不成功,我想程序要完蛋了,程序做错误处理(显示出现什么错误)的能力都没有了


这个确实没必要检查这种小内存空间的分配
jesunmy2008 2008-12-31
  • 打赏
  • 举报
回复
帮顶
三楼好有意思
zhyinty 2008-12-31
  • 打赏
  • 举报
回复
up
星羽 2008-12-31
  • 打赏
  • 举报
回复
up
funnybunny 2008-12-31
  • 打赏
  • 举报
回复
看看学习一下~
hackers007 2008-12-31
  • 打赏
  • 举报
回复
你可以去看下C++必知必会,中的异常方面的,估计能解决你一点疑惑
呵呵,同时祝楼主新的一年快乐
加载更多回复(18)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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