Span Zhang(张友邦)的专栏 (分形艺术,摄影,软件开发,生活休闲)

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘世如潮人如水,只叹江湖几人回。

张友邦ID:spanzhang
149228次访问,排名509好友11人,关注者26
张友邦,男,微软认证专家,系统分析员,希赛网专业顾问。1980年生于四川宜宾,2002年获得国防科技大学宇航科学与工程系学士学位,2004年成立长沙石斑软件有限公司并担任总经理,2007年出任广州快网信息技术有限公司技术总监,现任江西新邮信息技术有限公司软件部门负责人。主要研究领域包括软件架构与设计、WEB RIA、流媒体与计算机图形图像。受国家自然科学基金资助,2001年发表国家级核心刊物学术论文一篇。国内最顶级分形艺术创作软件FerryMan Fractal作者,2006年初创建原创分形艺术专业网站CGPAD.COM。邮件:spanzhang@hotmail.com;QQ:18012083。
spanzhang的文章
原创 196 篇
翻译 0 篇
转载 5 篇
评论 71 篇
张友邦的公告
最近评论
spanzhang:曾诗意你好,你写了一个不时评论的评论,很有意思。我现在是无业游民,联系QQ:18012083。
曾诗意:张友邦你好。现在哪里上班呢?你的现在的联系qq是多少?
amidixie:恭喜啊,你儿子要晚几天出生的话,和你这个当爸的要一天生了。
spanzhang:你是说关于分形艺术的那个书稿吧?正在写最后一章。但因为刚刚生了小孩,有点忙不过来。可能会稍微晚点出版。
candy:嘿嘿 谢谢
文章分类
收藏
    相册
    ◆复迭代分形
    ◆三维立体画
    ◆鼠标绘画
    ◆我的像册
    链接
    ●CGPAD分形艺术
    ●Renderosity
    ●中国系统分析员CSAI名片
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 函数返回设计以及错误处理收藏

    新一篇: 两张作品入选Renderosity Fractal Window Weekly | 旧一篇: SQL Agent调度低于1分钟的循环作业

    本文属spanzhang(张友邦)原创,发布地址为:http://blog.csdn.net/spanzhang。转载请注明原文出处,否则我就死给你看。

     今天在闲逛的时候发现一篇文章,zhuweisky写的《函数设计之美--函数需要返回错误码吗(一)?》(http://blog.csdn.net/zhuweisky/archive/2005/09/08/475355.aspx)。文章主要对函数返回错误码一事进行了讨论,作者最后给出的观点是采用契约式的前置约束而不是返回错误码来使得设计变得更加优雅。

    我对这个问题也关心很久了,一直没来得及整理思路。应该说这是一个非常普遍的设计问题,很多人都在这个问题前犯过难。我觉得对于函数返回值的设计以及错误处理应该和团队习惯以及开发工具有很大关系,个人不推荐契约式的前置约束。我对契约式设计没有深入地研究过,但可以想象,运行时的契约检查如果不成立同样也会涉及到错误处理(有可能是抛出异常),所以荐契约式的前置约束实际上是换汤不换药。但我在zhuweisky的文章中看到的代码没有在函数前置约束的Meta Data中指定契约不满足时的处理办法,语言级的支持没办法在编译的时候提供任何运行时保证。

    对于C++开发语言,我个人推荐采用返回值的方式来表达运行结果情况而用out参数(指针或引用)承载实际内容。对简单的情况,返回值可以是bool类型,但更多的时候推荐使用枚举(或int)。任何函数在执行之初对传入参数和运行环境的基本检查是必需的,这是一个非常好的习惯。之所以我这样认为,是因为C/C++的历史原因导致。而对于Java来说就更多的推荐使用异常机制来处理错误和约束。但函数约束检查都是必须的,它能在局部保证函数的正常运行。

    zhuweisky在文中提到的一句话我非常赞同:不要让错误传播(出现),在错误出现的发源地(萌芽期)就解决它!错误越是传播到最后,关于处理它的上下文就丢失得越多,对于错误的蔓延就越是爱莫能助!这也正是约束检查的证据,同时结合分层的设计让错误呈现出层次结构,对每一层的错误处理都是必需的。

    以上观点纯属个人见解,如有不同意见,欢迎来信:spanzhang@gmail.com

    发表于 @ 2008年03月03日 10:08:00|编辑

    新一篇: 两张作品入选Renderosity Fractal Window Weekly | 旧一篇: SQL Agent调度低于1分钟的循环作业

    评论:没有评论。

    Csdn Blog version 3.1a
    Copyright © 张友邦