扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年2月7日
关键字: Nick Gibson 程序设计
看过《罗生门》这部电影的人都熟悉武士道,日本的“武士精神”,一种行为准则,为人们,特别是战时武士生活的方方面面提供指导。武士道至死强调个人荣誉的重要性。日本战士——日本武士——应该战斗到生命的最后一刻,做到“不成功,则成仁”。
那么,这个古老的行为准则与软件设计有何关系呢?对程序员而言,武士道也是一种设计指南,主要在使用支持异常的语言时应用。简单来说,一种方法要么成功完成它的任务,返回一个合法结果;要么形成异常然后终止:或者成功返回,或者根本不返回。这样做的目的在于消除使用返回代码或无效对象来表明一个方法失败或遇到意外的旧有做法。
你可能会说,等等,我们这么多年一直在这么做呀!而且,总是使用异常不是会减慢程序的运行速度吗?如果我到处使用异常,可能会降低运行速度;但“武士道”编码方法肯定有补偿这种缺点的优势:
if (x != -1) {
x *= itemCost(a);
}
如你所想的那样,把支持异常作为避免错误的方式的语言常常使用这种编码方法。Python标准库允许使用“武士道”编码方法,基本上Java API也是这样。自然,大多数情况下,应用“武士道”编码方法总是会出现几个例外情况(没有双关意义)。
例如,在Python中,子字符串搜索函数str.find和常规表达式匹配函数re.match在失败时都返回一个错误代码。str.find要么返回子字符串第一次出现的目录,或者如果子字符串根本没有在那个字符串中出现,则返回- 1。同样,如果表达式不匹配,re.match返回None而非一个匹配对象。初看来,这似乎不太适当;但如果你考虑一下,这其实完全依赖于你如何定义一个函数任务,或契约。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者