代码应该怎样写,才能高效、稳定、减少调试时间??(关于返回值与程序日志)

hcl545 2012-12-21 09:16:26
各位高手:
MFC下编程1年多时间了,越来越感觉自己欠缺的很多,最近突然思考两个问题。
问题一:我们在编程的时候,会用到很多函数(API或其它函数,eg:CreatThread、Open、Detach等等等等),这些函数经常会有返回值,以判断执行的成功与否,这个时候我们该怎么办?
方法一:判断返回值——出错时就再次运行,直到运行成功,或者运行到指定次数就退出,并在界面上弹出错误。优点:提高了程序的稳定性; 缺点:太麻烦,而且有太多的函数有成功与否的返回值;
方法二:不处理,虽然在长时间运行时可能出错,但减少了代码量,程序更简洁。

问题二:关于程序日志,对于需要长时间运行的程序,在特定位置将程序的运行状态通过程序写入文档中,便于故障时查看。这里有两个点:不写日志,这似乎不太合理,因而你不可能保证自己的程序100%不出问题;写日志——如果不当可能会降低程序的运行效率,并引入新的问题。

各位大侠,对于上述两点,为提高程序的稳定性,你们是怎么做的呢,还有其它注意点,也请在这里讨论一下!!赐教一下!!

...全文
157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcl545 2012-12-23
  • 打赏
  • 举报
回复
引用 7 楼 tiger9991 的回复:
API的判断是返回你这个函数执行是否成功,根据你特定条件下API也是会经常返回失败的。 (诸如绘图,申请空间等等,都会失败的,你后续分析代码都需要这些信息,关键地点的API一定要加上) 加个开关不是很EASY啊,关键你封装输出的时候都调用一个输出函数,在这个输出函数里面控制一次就可以了。
有道理!很有道理,在我的函数结束的地方加个返回值就可以了!!谢谢
傻X 2012-12-21
  • 打赏
  • 举报
回复
API的判断是返回你这个函数执行是否成功,根据你特定条件下API也是会经常返回失败的。 (诸如绘图,申请空间等等,都会失败的,你后续分析代码都需要这些信息,关键地点的API一定要加上) 加个开关不是很EASY啊,关键你封装输出的时候都调用一个输出函数,在这个输出函数里面控制一次就可以了。
hcl545 2012-12-21
  • 打赏
  • 举报
回复
[quote=引用 2 楼 oyljerry 的回复:] 1.可以自己分析一下,起码对于一些重要的位置,或容易出错的地方,应该判断返回值 2.需要有日志,这样便于以后产品分析,可以定义log 等级,当发布后,只打印出错的log,只有需要的时候才打开所有的详细log[/quote 有道理,不过谁知道哪些有返回值的函数,会容易哪些不容易出错呢!!??
hcl545 2012-12-21
  • 打赏
  • 举报
回复
引用 3 楼 tiger9991 的回复:
1.这个是经验的问题,当然这个更与你项目周期有关系,太紧完成功能交付才是第一。 不过按照我个人习惯我是希望写返回值的,出问题你就知道这东西的好处了。而且如果你封装的好,我用SourceInsight写代码都有一键出大量固定模式代码的功能。 2.绝对要log,而且log要用各种开关来控制。这样就不影响效率了。我log的开关都写在INI配置文件中的
谢谢!以前我基本没处理返回值,最近编程序的时候,由于我的程序需要长期运行,因而考虑这个。不过你说的是自己的函数用返回值,但我的意思是对各种API的判断问题?麻烦再说一下,谢谢!! 对你提到的第二点,我是最近自己建立了一个类,通过一个函数每天建立一个日志文件,现在是没有加开关,经验还很不足啊!!
hcl545 2012-12-21
  • 打赏
  • 举报
回复
[quote=引用 1 楼 ponydph 的回复:] 这种方法好吗?这不是降低了程序处理错误的能力,为什么出错时不重新运行一次程序呢?
傻X 2012-12-21
  • 打赏
  • 举报
回复
1.这个是经验的问题,当然这个更与你项目周期有关系,太紧完成功能交付才是第一。 不过按照我个人习惯我是希望写返回值的,出问题你就知道这东西的好处了。而且如果你封装的好,我用SourceInsight写代码都有一键出大量固定模式代码的功能。 2.绝对要log,而且log要用各种开关来控制。这样就不影响效率了。我log的开关都写在INI配置文件中的
oyljerry 2012-12-21
  • 打赏
  • 举报
回复
1.可以自己分析一下,起码对于一些重要的位置,或容易出错的地方,应该判断返回值 2.需要有日志,这样便于以后产品分析,可以定义log 等级,当发布后,只打印出错的log,只有需要的时候才打开所有的详细log
ponydph 2012-12-21
  • 打赏
  • 举报
回复
引用 楼主 hcl545 的回复:
各位高手: MFC下编程1年多时间了,越来越感觉自己欠缺的很多,最近突然思考两个问题。 问题一:我们在编程的时候,会用到很多函数(API或其它函数,eg:CreatThread、Open、Detach等等等等),这些函数经常会有返回值,以判断执行的成功与否,这个时候我们该怎么办? 方法一:判断返回值——出错时就再次运行,直到运行成功,或者运行……
一起处理,只要一个失败就返回自定义函数失败标志,函数调用失败,再写日志

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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