返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • [正版][正版]重构 改善既有代码的设计 2二版 平装版/代码整洁之道 软件开发程序员编程珠玑入门进阶面试书籍软件工程代
  • 本店商品限购一件,多拍不发货,谢谢合作
    • 作者: 罗伯特·C.著
    • 出版社: 人民邮电出版社
    • 出版时间:1
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    如梦图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 罗伯特·C.著
    • 出版社:人民邮电出版社
    • 出版时间:1
    • 装帧:平装
    • ISBN:9788462152467
    • 版权提供:人民邮电出版社

                                                        店铺公告

    为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。 温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货), 关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。


    内容介绍

    9787115508652 重构 改善既有代码的设计 *2版 平装版 99.00

    9787115524133 代码整洁之道 99.00

    《重构 改善既有代码的设计 *2版 平装版》

    本书是经典著作《重构》出版20年后的更新版。书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了

    60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风

    险。 

    本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。 


    《代码整洁之道》

    软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。

    本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行

    之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,

    从而有效提升代码质量。

    本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可

    资借鉴的价值。



    目录

    《重构 改善既有代码的设计 第 2版 平装版》

    第 1 章 重构,第 一个示例  1

    1.1 起点  1

    1.2 对此起始程序的评价  3

    1.3 重构的第 一步  5

    1.4 分解statement 函数  6

    1.5 进展:大量嵌套函数  22

    1.6 拆分计算阶段与格式化阶段  24

    1.7 进展:分离到两个文件(和两个阶段)  31

    1.8 按类型重组计算过程  34

    1.9 进展:使用多态计算器来提供数据  41

    1.10 结语  43

    第 2 章 重构的原则  45

    2.1 何谓重构  45

    2.2 两顶帽子  46

    2.3 为何重构  47

    2.4 何时重构  50

    2.5 重构的挑战  55

    2.6 重构、架构和YAGNI  62

    2.7 重构与软件开发过程  63

    2.8 重构与性能  64

    2.9 重构起源何处  67

    2.10 自动化重构  68

    2.11 延展阅读  70

    第3 章 代码的坏味道  71

    3.1 神秘命名(Mysterious Name)  72

    3.2 重复代码(Duplicated Code)  72

    3.3 过长函数(Long Function)  73

    3.4 过长参数列表(Long Parameter List)  74

    3.5 全局数据(Global Data)  74

    3.6 可变数据(Mutable Data)  75

    3.7 发散式变化(Divergent Change)  76

    3.8 霰弹式修改(Shotgun Surgery)  76

    3.9 依恋情结(Feature Envy)  77

    3.10 数据泥团(Data Clumps)  78

    3.11 基本类型偏执(Primitive Obsession)  78

    3.12 重复的switch(Repeated Switches)  79

    3.13 循环语句(Loops)  79

    3.14 冗赘的元素(Lazy Element)  80

    3.15 夸夸其谈通用性(Speculative Generality)  80

    3.16 临时字段(Temporary Field)  80

    3.17 过长的消息链(Message Chains)  81

    3.18 中间人(Middle Man)  81

    3.19 内幕交易(Insider Trading)  82

    3.20 过大的类(Large Class)  82

    3.21 异曲同工的类(Alternative Classes with Different Interfaces)  83

    3.22 纯数据类(Data Class)  83

    3.23 被拒绝的遗赠(Refused Bequest)  83

    3.24 注释(Comments)  84

    第4 章 构筑测试体系  85

    4.1 自测试代码的价值  85

    4.2 待测试的示例代码  87

    4.3 第 一个测试  90

    4.4 再添加一个测试  93

    4.5 修改测试夹具  95

    4.6 探测边界条件  96

    4.7 测试远不止如此  99

    第5 章 介绍重构名录  101

    5.1 重构的记录格式  101

    5.2 挑选重构的依据  102

    第6 章 第 一组重构  105

    6.1 提炼函数(Extract Function)  106

    6.2 内联函数(Inline Function)  115

    6.3 提炼变量(Extract Variable)  119

    6.4 内联变量(Inline Variable)  123

    6.5 改变函数声明(Change Function Declaration)  124

    6.6 封装变量(Encapsulate Variable)  132

    6.7 变量改名(Rename Variable)  137

    6.8 引入参数对象(Introduce Parameter Object)  140

    6.9 函数组合成类(Combine Functions into Class)  144

    6.10 函数组合成变换(Combine Functions into Transform)  149

    6.11 拆分阶段(Split Phase)  154

    第7 章 封装  161

    7.1 封装记录(Encapsulate Record)  162

    7.2 封装集合(Encapsulate Collection)  170

    7.3 以对象取代基本类型(Replace Primitive with Object)  174

    7.4 以查询取代临时变量(Replace Temp with Query)  178

    7.5 提炼类(Extract Class)  182

    7.6 内联类(Inline Class)  186

    7.7 隐藏委托关系(Hide Delegate)  189

    7.8 移除中间人(Remove Middle Man)  192

    7.9 替换算法(Substitute Algorithm)  195

    第8 章 搬移特性  197

    8.1 搬移函数(Move Function)  198

    8.2 搬移字段(Move Field)  207

    8.3 搬移语句到函数(Move Statements into Function)  213

    8.4 搬移语句到调用者(Move Statements to Callers)  217

    8.5 以函数调用取代内联代码(Replace Inline Code with Function Call)  222

    8.6 移动语句(Slide Statements)  223

    8.7 拆分循环(Split Loop)  227

    8.8 以管道取代循环(Replace Loop with Pipeline)  231

    8.9 移除死代码(Remove Dead Code)  237

    第9 章 重新组织数据  239

    9.1 拆分变量(Split Variable)  240

    9.2 字段改名(Rename Field)  244

    9.3 以查询取代派生变量(Replace Derived Variable with Query)  248

    9.4 将引用对象改为值对象(Change Reference to Value) 252

    9.5 将值对象改为引用对象(Change Value to Reference) 256

    第 10 章 简化条件逻辑  259

    10.1 分解条件表达式(Decompose Conditional)  260

    10.2 合并条件表达式(Consolidate Conditional Expression)  263

    10.3 以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clauses)  266

    10.4 以多态取代条件表达式(Replace Conditional with Polymorphism)  272

    10.5 引入特例(Introduce Special Case)  289

    10.6 引入断言(Introduce Assertion)  302

    第 11 章 重构API  305

    11.1 将查询函数和修改函数分离(Separate Query from Modifier)  306

    11.2 函数参数化(Parameterize Function)  310

    11.3 移除标记参数(Remove Flag Argument)  314

    11.4 保持对象完整(Preserve Whole Object)  319

    11.5 以查询取代参数(Replace Parameter with Query)  324

    11.6 以参数取代查询(Replace Query with Parameter)  327

    11.7 移除设值函数(Remove Setting Method)  331

    11.8 以工厂函数取代构造函数(Replace Constructor with Factory Function)  334

    11.9 以命令取代函数(Replace Function with Command)  337

    11.10 以函数取代命令(Replace Command with Function)  344

    第 12 章 处理继承关系  349

    12.1 函数上移(Pull Up Method)  350

    12.2 字段上移(Pull Up Field)  353

    12.3 构造函数本体上移(Pull Up Constructor Body) 355

    12.4 函数下移(Push Down Method)  359

    12.5 字段下移(Push Down Field)  361

    12.6 以子类取代类型码(Replace Type Code with Subclasses)  362

    12.7 移除子类(Remove Subclass)  369

    12.8 提炼超类(Extract Superclass)  375

    12.9 折叠继承体系(Collapse Hierarchy)  380

    12.10 以委托取代子类(Replace Subclass with Delegate)  381

    12.11 以委托取代超类(Replace Superclass with Delegate)  399

    参考文献 405

    索引 409

    《代码整洁之道》

    目 录

    第 1章 整洁代码 1

    1.1  要有代码 2

    1.2  糟糕的代码 2

    1.3  混乱的代价 3

    1.3.1  华丽新设计 4

    1.3.2  态度 4

    1.3.3  谜题 5

    1.3.4  整洁代码的艺术 5

    1.3.5  什么是整洁代码 6

    1.4  思想流派 10

    1.5  我们是作者 11

    1.6  童子军军规 12

    1.7  前传与原则 12

    1.8  小结 13

    1.9  文献 13

    第 2章 有意义的命名 14

    2.1  介绍 14

    2.2  名副其实 15

    2.3  避免误导 16

    2.4  做有意义的区分 17

    2.5  使用读得出来的名称 18

    2.6  使用可搜索的名称 19

    2.7  避免使用编码 20

    2.7.1 匈牙利语标记法 20

    2.7.2  成员前缀 21

    2.7.3  接口和实现 21

    2.8  避免思维映射 21

    2.9  类名 22

    2.10  方法名 22

    2.11  别抖机灵 22

    2.12  每个概念对应一个词 23

    2.13  别用双关语 23

    2.14  使用解决方案领域名称 24

    2.15  使用源自所涉问题领域的名称 24

    2.16  添加有意义的语境 24

    2.17  不要添加没用的语境 26

    2.18  *后的话 27

    第3章 函数 28

    3.1  短小 31

    3.2  只做一件事 32

    3.3  每个函数一个抽象层级 33

    3.4  switch语句 34

    3.5  使用具有描述性的名称 35

    3.6  函数参数 36

    3.6.1  单参数函数的普遍形式 37

    3.6.2  标识参数 37

    3.6.3  双参数函数 38

    3.6.4  三参数函数 38

    3.6.5  参数对象 39

    3.6.6  参数列表 39

    3.6.7  动词与关键字 39

    3.7  无副作用 40

    3.8  分隔指令与询问 41

    3.9  使用异常替代返回错误码 42

    3.9.1  抽离try/catch代码块 42

    3.9.2  错误处理就是一件事 43

    3.9.3  Error.java依赖磁铁 43

    3.10  别重复自己 44

    3.11  结构化编程 44

    3.12  如何写出这样的函数 45

    3.13  小结 45

    3.14  SetupTeardownIncluder程序 45

    3.15  文献 48

    第4章 注释 49

    4.1  注释不能美化糟糕的代码 50

    4.2  用代码来阐述 51

    4.3  好注释 51

    4.3.1  法律信息 51

    4.3.2  提供信息的注释 51

    4.3.3  对意图的解释 52

    4.3.4  阐释 53

    4.3.5  警示 53

    4.3.6  TODO注释 54

    4.3.7  放大 55

    4.3.8  公共API中的Javadoc 55

    4.4  坏注释 55

    4.4.1  喃喃自语 55

    4.4.2  多余的注释 56

    4.4.3  误导性注释 58

    4.4.4  循规式注释 59

    4.4.5  日志式注释 59

    4.4.6  废话注释 60

    4.4.7  可怕的废话 62

    4.4.8  能用函数或变量时就别用注释 62

    4.4.9  位置标记 62

    4.4.10  括号后面的注释 63

    4.4.11  归属与署名 63

    4.4.12  注释掉的代码 64

    4.4.13  HTML注释 64

    4.4.14  非本地信息 65

    4.4.15  信息过多 65

    4.4.16  不明显的联系 66

    4.4.17  函数头 66

    4.4.18  非公共代码中的Javadoc 66

    4.4.19  范例 66

    4.5  文献 70

    第5章 格式 71

    5.1  格式的目的 72

    5.2  垂直格式 72

    5.2.1  向报纸学习 73

    5.2.2  概念间垂直方向上的区隔 73

    5.2.3  垂直方向上的靠近 74

    5.2.4  垂直距离 75

    5.2.5  垂直顺序 79

    5.3  横向格式 80

    5.3.1  水平方向上的区隔与靠近 81

    5.3.2  水平对齐 82

    5.3.3  缩进 83

    5.3.4  空范围 84

    5.4  团队规则 85

    5.5  “鲍勃大叔”的格式规则 85

    第6章 对象和数据结构 88

    6.1  数据抽象 88

    6.2  数据、对象的反对称性 90

    6.3  得墨忒耳律 92

    6.3.1  火车失事 92

    6.3.2  混杂 93

    6.3.3  隐藏结构 93

    6.4  数据传送对象 94

    6.5  小结 95

    6.6  文献 96

    第7章 错误处理 97

    7.1  使用异常而非返回码 98

    7.2  先写try-catch-finally语句 99

    7.3  使用未检异常 100

    7.4  给出异常发生的环境说明 101

    7.5  依调用者需要定义异常类 101

    7.6  定义常规流程 103

    7.7  别返回null值 104

    7.8  别传递null值 105

    7.9  小结 106

    7.10  文献 106

    第8章 边界 107

    8.1  使用第三方代码 108

    8.2  浏览和学习边界 109

    8.3  学习log4j 110

    8.4  学习性测试的好处不只是免费 112

    8.5  使用尚不存在的代码 112

    8.6  整洁的边界 113

    8.7  文献 114

    第9章 单元测试 115

    9.1  TDD三定律 116

    9.2  保持测试整洁 117

    9.3  整洁的测试 118

    9.3.1  面向特定领域的测试语言 120

    9.3.2  双重标准 121

    9.4  每个测试一个断言 123

    9.5  F.I.R.S.T. 125

    9.6  小结 125

    9.7  文献 126

    第 10章 类 127

    10.1  类的组织 128

    10.2  类应该短小 128

    10.2.1  单一权责原则 130

    10.2.2  内聚 131

    10.2.3  保持内聚性就会得到许多短小的类 132

    10.3  为了修改而组织 138

    10.4  文献 141

    第 11章 系统 142

    11.1  如何建造一个城市 143

    11.2  将系统的构造与使用分开 143

    11.2.1  分解main 144

    11.2.2  工厂 145

    11.2.3  依赖注入 145

    11.3  扩容 146

    11.4  Java代理 149

    11.5  纯Java AOP框架 151

    11.6  AspectJ的方面 154

    11.7  测试驱动系统架构 154

    11.8  优化决策 155

    11.9  明智使用添加了可论证价值的标准 155

    11.10  系统需要领域特定语言 156

    11.11  小结 156

    11.12  文献 156

    第 12章 迭进 158

    12.1  通过迭进设计达到整洁目的 158

    12.2  简单设计规则1:运行所有测试 159

    12.3  简单设计规则2~4:重构 159

    12.4  不可重复 160

    12.5  表达力 162

    12.6  尽可能少的类和方法 163

    12.7  小结 163

    12.8  文献 163

    第 13章 并发编程 164

    13.1  为什么要并发 165

    13.2  挑战 166

    13.3  并发防御原则 167

    13.3.1  单一权责原则 167

    13.3.2  推论:限制数据作用域 167

    13.3.3  推论:使用数据副本 168

    13.3.4  推论:线程应尽可能地独立 168

    13.4  了解Java库 168

    13.5  了解执行模型 169

    13.5.1  生产者-消费者模型 170

    13.5.2  读者-作者模型 170

    13.5.3  宴席哲学家 170

    13.6  警惕同步方法之间的依赖 170

    13.7  保持同步区域微小 171

    13.8  很难编写正确的关闭代码 171

    13.9  测试线程代码 172

    13.9.1  将伪失败看作可能的线程问题 172

    13.9.2  先使非线程代码可工作 172

    13.9.3  编写可插拔的线程代码 173

    13.9.4  编写可调整的线程代码 173

    13.9.5  运行多于处理器数量的线程 173

    13.9.6  在不同平台上运行 173

    13.9.7 装置试错代码 174

    13.9.8  硬编码 174

    13.9.9  自动化 175

    13.10  小结 176

    13.11  文献 176

    第 14章 逐步改进 177

    14.1  Args的实现 178

    14.2  Args:草稿 185

    14.2.1  所以我暂停了 196

    14.2.2  渐进 197

    14.3  字符串类型参数 199

    14.4  小结 236

    第 15章 JUnit内幕 237

    15.1  JUnit框架 238

    15.2  小结 251

    第 16章 重构SerialDate 252

    16.1  首先,让它能工作 253

    16.2  让它做对 255

    16.3  小结 268

    16.4  文献 268

    第 17章 味道与启发 269

    17.1  注释 270

    17.2  环境 271

    17.3  函数 271

    17.4  一般性问题 272

    17.5  Java 288

    17.6  名称 291

    17.7  测试 295

    17.8  小结 296

    17.9  文献 296

    附录A 并发编程II 297

    附录B org.jfree.date.SerialDate 326

    结束语 388



    作者介绍

    《重构 改善既有代码的设计 *2版 平装版》

    作者简介


    马丁·福勒(Martin Fowler) 软件开发大师,ThoughtWorks 科学家。他是一位作家、演说者、咨询师。他致力于改善企业级的软件设计,对设计以及支撑设计的工程实践孜

    孜以求。他在重构、面向对象分析设计、模式、XP 和UML 等领域都有贡献,著有《重构》《分析模式》《领域特定语言》等经典著作。 


    译者简介


    熊节 在IT 行业已经打拼了18年,在金融、零售、政府、电信、制造业等行业的信息化建设方面有着丰富经验,是中国IT业敏捷浪潮的领军人物。熊节拥有利物浦大学MBA学

    位。

    林从羽 ThoughtWorks软件开发工程师,曾服务于国内外多家大型企业,致力于帮助团队更快更好地交付可工作的软件。拥抱敏捷精神,TDD爱好者,纯键盘工作者。

    《代码整洁之道》

    作者简介

    Robert C. Martin,*界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪70年代初成为职业

    程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,到今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道:程序员的职业素

    养》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。


    译者简介

    韩磊,互联网产品与社区运营专家,技术书籍著译者。曾任CSDN及《程序员》杂志副总经理、总编辑,广东二十一世纪传媒新媒体事业部总经理等职。现任AR初创企业亮风

    台广州公司总经理。除本书外,还译有《梦断代码》《C#编程风格》等书。与刘韧合著《网络媒体教程》,与戴飞合译《Beginning C# Objects中文版:概念到代码》。


    1
    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购