欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 科技 > 计算机与网络 > 软件工程及软件方法学 > 笑谈软件工程:异常处理的设计与重构

浏览历史

笑谈软件工程:异常处理的设计与重构

笑谈软件工程:异常处理的设计与重构

prev next

  • 商品货号:20150522001
  • 所属系列:软件工程
    商品重量:0克
    作者:陈建村
    出版社:清华大学出版社
    图书书号/ISBN:9787302394495
    出版日期:2015年5月
    开本:16开
    图书页数:364
    图书装订:平装
    图书规格:185mm×230mm
    版次:1-1
    印张:22.75
    字数:254千字
  • 上架时间:2015-05-22
    商品点击数:1752
  • 定价:¥69.00元
    本店售价:¥69.00元
    注册用户:¥69.00元
    vip:¥65.55元
    黄金等级:¥62.10元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

内 容 简 介
本书凝聚作者十余年的思考与实践,从异常处理的设计与重构入手,介绍了如何提升软件的健壮性。全书共六部分,从异常处理的现状谈起,逐一条分缕析,阐述异常处理的基本概念、工作机制、异常处理的4+1观念,介绍软件健壮度等级和异常处理策略,讨论异常处理的坏味道和重构。
作者以诙谐幽默的文笔,于谈笑间揭示异常处理的来龙去脉,兼顾实用性和趣味性,非常适合善于思考和勤于实践的软件工程师阅读,也适合软件学院和计算机相关专业学生参考。
 
序言/Preface
这是一本异常处理的书,
也是一本软件设计的书。
是的,身为一位专业的软件开发人员,从小到大你可能学过各式各样的软件设计技术与方法。从最基础的程序语言(C、C++、Java、C#、VB.NET、Objective-C、JavaScript、Ruby、Python等)、数据结构与算法,到面向对象分析与设计、设计模式、软件架构以及各种敏捷开发实践,包含自动化测试、测试驱动开发、行为驱动开发、持续集成和敏捷设计原则等。以上,所有的“大师”费尽心力,都在告诉你“如何设计软件的光明面?”
什么?!软件的光明面?是的,软件跟宇宙万物一样,有光明面也有黑暗面。软件的光明面就是“正常行为”(normal behavior),而黑暗面则是“异常行为”(abnormal behavior)。就好像一般民众看到“黑道”与“坏人”,人人莫不避而远之。大部分的开发人员对于软件的“黑暗面”与“异常行为”,都感到很头大,在内心中抱持着“闭上眼睛就以为看不见”的心态:“反正程序看起来可以动就好了”,您说是吗?
软件设计包含着正常行为与异常行为,两者相互影响,忽略任何一方,都可能让原本精心规划的设计变得不堪一击。既然异常行为的设计那么重要,与正常行为相较,为什么很少人谈论异常行为?
因为很难。
对付异常行为很难,因为它“躲在正常行为的影子下”,很容易被有意、无意地忽略。其次,它与正常行为“水乳交融”、“我中有你,你中有我”。套一句软件开发的术语,它是一种“横切关注点”(cross-cutting concern),需要具备怪医黑杰克与庖丁解牛的能力,同时关注方方面面,才有可能让你在对“病人”(程序)进行“外科手术”(处理异常)的时候,避免不小心切断动脉,导致“失血过多”(越改越乱)而让病人提早上天堂的窘境。
俗话说“夜路走多了,自然会碰到鬼”,本书累积了Teddy“碰到鬼”的经验,从异常处理设计出发,专门探讨软件设计黑暗面的问题,希望补足开发人员长久以来所欠缺的“维他命”。
这是一本写给开发人员的书,
也是一本写给管理阶层的书。
看到书名,你可能会以为这是一本写给开发人员的书。错!开发人员的钱要赚,管理阶层的钱也要赚。嗯嗯,Teddy的意思是说,异常处理做得好,可以提升软件的强健度,提高客户满意度,帮公司赚大钱,减少程序错误,早点下班回家陪家人,并顺便护肝。
本书分为6部分42章,有些地方技术含量相对较低,对于不想知道太多异常处理实现细节的管理阶层,可以只看这几个部分。
另外像是Column A“倒霉的人很适合当神秘客”、Column C“网络又断”、Column D“这是你的问题,不是我的问题”、Column E“你如何评价成功”、Column G“升级、降级,傻傻分不清楚”、Column I“客户满意,老板赚钱,你护肝”,也很适合管理阶层当作小说来看。
至于开发人员,当然是要“怒看”整本书的内容才够“给力”。
是否与程序语言相关
异常处理设计重点不在程序语言和语法,而在背后的设计原理。虽然本书范例以Java语言为主,但也一并讨论了许多Java语言和C#语言(支持与不支持checked exception的双方代表)在异常处理设计精神与作法上的差异。书中所介绍的异常处理设计观念、名词、原则、方法与重构,只要是面向对象语言,不管是Java、C#、VB.NET、Python、Ruby等,差不多都适用。
至于采用Java语言作为例子的原因很简单:因为它是当代流行的商业语言里面,异常处理机制最困难(或是说最“讨厌”)的语言。搞懂了Java的异常处理,再应用到其它面向对象语言,就好像喝开水一样,变得非常容易。
以上用白话文来说就是,不管你使用什么语言,都应该买一本带回家。
书中用语和排版
以一本中文书而言,书中的英文稍微多了一些。有些英文术语译成中文之后,阅读起来总是少了点味道,所以Teddy会选择性地保留一些英文,例如checked exception和unchecked exception。但英文名词第一次出现的时候,在它的“前后”或“附近”一定会有相对应的中文翻译或说明。
为了区分特别的名词,本书程序代码采用Courier New字体,而书中提到模式名称(pattern name)、坏味道(bad smell)、重构(refactoring),则使用大写开头的英文斜体字表示。例如Command、Dummy Handler。对于本书中所提出的异常处理重构,除了以斜体字表示以外,还会在名称之后加上《重构》一书中介绍该重构的章节页码,例如Replace Error Code with Exception(299)。
一些软件领域常用的英文名词书中直接用中文表示,例如用function与method翻译成“函数”(有些中文书会使用“函数”或“方法”)。class、object、instance和type用“类”、“对象”、“实例”和“类型”表示。thread、process用“线程”和“进程”称呼。Application Programming Interface(应用程序编程接口)则直接使用API。
最后,重要的概念和知识点以黑体字加以强调。
***
本书许多内容最初来自于Teddy的博士论文“Java异常处理:模型、重构与模式”(原题目为Java Exception Handling: Models, Refactorings, and Patterns)以及工作上的实践经验,经改写后,从2007年起陆续发表在“搞笑谈软工”博客,最后集结成册再加上“强烈月光照射”之后,变身成为大家现在看到的这本书。书中内容经过Teddy多次修改与审校,但刻意保留原本在博客中以“乡民”称呼读者的方式。此为特意为之,并非Teddy偷懒,特此说明。
乡民们若对本书内容有任何问题、心得、称赞,或者发现错误,或是看到不爽想翻桌的时候,欢迎直接写信到teddy.chen.tw@gmail.com给Teddy或加入Facebook上的“搞笑谈软工社团”,网址为https://www. facebook.com/groups/teddy.tw/,我们一起讨论。

目录/Contents
Part 1  异常处理的现状
Chapter 01  你对异常处理的了解有多少? 3
        02  异常处理的重要性 6
        03  “种花”电信,我真是猜不透你啊! 14
        04  HTC One X—— 发现一个Bug 21
        05  HTC One X—— 我只是想打通电话呀! 25
        06  HTC One X—— 拍照的错误消息描述 30
        07  可靠性可以是一门生意 35
Column A. 倒霉的人很适合当神秘客 39
Part 2  异常处理的基本观念
Chapter 08  强健性大战首部曲—— 魅影危机 47
Column B. 找不到数据,要传回Null还是丢出异常? 54
        09  异常处理的四种脉络 57
        10  面向对象语言的异常处理机制 69
        11  你的汽车有多耐撞?谈谈异常安全性 86
       12  对比异常处理和容错设计 90
Column C. 网络又断了 95
Part 3  JAVA语言的异常处理机制
Chapter 13  Java的异常处理 101
       14  我的异常被finally块覆盖了 110
       15  被打压的异常—— 抢救异常大作战 116
       16  清理失效的语义要表达清楚 122
       17  自己制作“被打压的异常” 131
       18  Try、Catch和Finally的责任分担 144
Column D. 这是你的问题,不是我的问题 152
Chapter 19  异常处理失败,怎么办? 156
       20  已查异常与未查异常的语义与问题 159
       21  接口演进 164
Part 4  为什么异常处理那么难?异常处理的4+1观点
Chapter 22  用途观点 173
       23  设计观点 177
       24  处理观点 181
       25  工具支持观点 185
       26  流程观点 191
Column E. 你如何评价成功 198
Part 5  强健度等级与异常处理策略
Chapter 27  异常处理设计的第一步—— 决定强健度等级 203
       28  强健度等级1—— 错误报告的实现策略 211
       29  强健度等级2—— 状态恢复的实现策略 216
       30  强健度等级3—— 行为恢复的实现策略 223
Column F. VMWare越狱之替代方案 231
Chapter 31  异常类的设计与使用技巧 235
       32  终止或继续 245
       33  自动化更新 249
Column G. 升级、降级,傻傻分不清楚 253
Part 6  异常处理坏味道与重构
Chapter 34  异常处理坏味道 261
Column H. 仙人打鼓有时错—— 谈谈Clean Code一书中介绍的异常处理 269
Chapter 35  用异常代替错误码 275
       36  以未查异常取代忽略已查异常 281
       37  以重新丢出异常代替空的处理程序 285
       38  使用最外层Try语句避免意外终止 290
       39  以函数取代嵌套的Try语句 295
       40  引入Checkpoint类 301
       41  引入多才多艺的Try块 309
Column  I. 客户满意,老板赚钱,你护肝 317
Chapter 42  一个函数只能有一个Try语句 326
Column J. 眼力测试 332
Appendix A.眼力测试参考答案 340
参考文献 349

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha