代码重构
代码重构封面图

代码重构

(美) 阿瑟诺维斯基 (Arsenovski,D.) , 著

出版社:清华大学出版社

年代:2011

定价:66.0

书籍简介:

本书讲述了组装重构工具箱的步骤,重构成模式的提示,如何让代码变得更简单、更易于修改和更易于理解。

作者介绍:

作者:(美国)阿瑟诺维斯基(Danijel Arsenovski) 译者:潘立福 权乐 阿瑟诺维斯基(Danijel Arsenovski),是一位作家、软件架构师,也是一位敏捷指导员。他目前担任Excelsys S.A.公司的产品和解决方案架构师,主要负责为当地的大量客户设计Web 2.0银行解决方案。在整改大型银行系统时,他开始尝试重构,并始终对重构保持着浓厚的兴趣。他因提倡在.NET平台上运用重构而声名远扬。Arsenovski是Visual Studio Magazine、.NET Developers Journal和Visual Systems Journal的撰稿人,拥有Microsoft Certified Solution Developer(MCSD)证书,并被评为2005年的Microsoft MVP。

书籍目录:

第1章 重构的全面介绍 1

1.1 重构的快速浏览 1

1.1.1 重构过程 2

1.1.2 软件开发现状概述 3

1.2 重构过程的详细介绍 5

1.2.1 代码味道的使用 5

1.2.2 代码转换 5

1.2.3 使重构的转换自动化 6

1.2.4 重构的优点 7

1.2.5 澄清一些常见的误解 10

1.3 没有孤军奋战的编程人员 18

1.4 c#和重构 20

1.5 小结 20

第2章 重构的初次体验 23

2.1 示例应用程序:calories calculator 23

2.1.1 具有计算推荐每日卡路里量功能的calories calculator应用程序 24

2.1.2 需求的增长:计算理想的体重 26

2.1.3 需求的增长:病人数据的持久化 29

2.2 重构实战 30

2.2.1 将btncalculate_click方法分解 31

2.2.2 计算并显示实际体重和理想体重之间差距的片段 32

2.2.3 按性别计算卡路里和理想的体重 33

2.2.4 经过方法提取之后的btncalculate_click方法 34

2.2.5 发现新的类 35

2.2.6 缩小patient类的接口 37

2.2.7 重新构建distancefromidealweight方法 40

2.2.8 创建patient类的层次结构 43

2.3 持久化功能的实现 48

2.3.1 保存数据 48

2.3.2 实现显示病人历史信息的功能 57

2.4 calories calculator的重构版本 62

2.5 小结 63

第3章 组建重构工具箱 65

3.1 使用自动化的重构工具 66

3.1.1 jetbrains提供的resharper 66

3.1.2 developer express提供的refactor! pro 67

3.1.3 developer express提供的refactor! for asp 67

3.1.4 visual studio的重构功能 68

3.2 单元测试的基本要素:测试用具 70

3.2.1 单元测试架构出现的原因 71

3.2.2 nunit的初体验 73

3.2.3 nunit的安装 73

3.2.4 使用示例 74

3.2.5 实现第一个测试 75

3.2.6 测试驱动的方法 83

3.2.7 可考虑的其他测试工具 84

3.3 关于版本控制的一些问题 86

3.3.1 作为备份系统的版本控制 86

3.3.2 版本控制和并发 86

3.4 小结 87

第4章 应用程序的原型:rent-a-wheels 89

4.1 会见客户 90

4.1.1 会见经理 90

4.1.2 会见前台接待员 91

4.1.3 会见停车场服务员 91

4.1.4 会见维护人员 92

4.2 实施rent-a-wheels项目中最初的步骤 92

4.2.1 参与者和用例 92

4.2.2 汽车的状态 94

4.2.3 应用程序主窗口的第一次草图 96

4.2.4 rent-a-wheels开发团队的会议 96

4.3 让原型运转 97

4.3.1 检查数据库模型 97

4.3.2 检查c#代码 99

4.4 快速的编程方法 102

4.4.1 数据库驱动的设计 103

4.4.2 基于gui的应用程序 103

4.4.3 事件驱动的编程 104

4.4.4 快速应用程序开发 104

4.4.5 将复制/粘贴作为代码重用的机制 104

4.4.6 通过重构过程从原型到最后交付 105

4.5 小结 105

第5章 基本的代码清理 107

5.1 消除无用代码 107

5.1.1 无用代码的类型 108

5.1.2 无用代码常见的来源 110

5.2 降低过度暴露的元素的作用域和访问级别 114

5.2.1 作用域和访问级别 116

5.2.2 过度暴露常见的来源 117

5.2.3 处理过度暴露的问题 120

5.3 使用显式导入 121

5.4 删除未使用的程序集引用 124

5.5 rent-a-wheels应用程序中的基本清理工作 125

5.6 小结 125

第6章 从问题域到代码:消除差距 127

6.1 理解问题域 128

6.1.1 第1步:收集信息 128

6.1.2 第2步:就词汇表达成一致意见 129

6.1.3 第3步:描述交互作用 130

6.1.4 第4步:建立原型 130

6.2 命名的指导原则 131

6.2.1 大写风格 132

6.2.2 简单的命名指导原则 132

6.2.3 良好的沟通:选择恰当的单词 134

6.2.4 “重命名”重构 137

6.2.5 visual studio中的“重命名”重构 139

6.3 已发布接口和公有接口 141

6.3.1 自包含的应用程序与可重用的模块 142

6.3.2 修改已发布接口 145

6.4 rent-a-wheels应用程序中的“重命名”和“安全重命名”重构 150

6.5 小结 150

第7章 对重复代码进行方法提取 153

7.1 封装代码和隐藏细节 153

7.2 分解方法 157

7.2.1 周长计算——长方法的一个示例 157

7.2.2 提取周长计算的代码 159

7.2.3 提取计算半径的代码 162

7.2.4 提取“等待用户关闭”代码 163

7.2.5 提取读取坐标的代码 163

7.2.6 visual studio中的extract method重构 167

7.3 方法内联化 169

7.4 重复代码的味道 172

7.4.1 重复代码的来源 173

7.4.2 复制/粘贴式编程 173

7.4.3 幻数 174

7.5 rent-a-wheels应用程序中的“提取方法”和“用常量取代幻数”重构 176

7.6 小结 177

第8章 方法合并与方法提取的技术 179

8.1 临时变量的处理 179

8.1.1 “将声明靠近引用处”重构 180

8.1.2 “将初始化移至声明处”重构 182

8.1.3 “拆分临时变量”重构 184

8.1.4 “临时变量内联化”重构 188

8.1.5 “用查询取代临时变量”重构 190

8.1.6 引入解释性的临时变量 192

8.2 处理长条件和嵌套条件 193

8.3 方法重组与rent-a-wheels 196

8.3.1 删除rent-a-wheels中的重复代码 198

8.3.2 rent-a-wheels中的“幻数”、“注释”以及“事件处理盲目性”味道 202

8.4 小结 207

第9章 发现对象 209

9.1 面向对象编程的简单回顾 210

9.1.1 oop中的对象 210

9.1.2 封装与对象 210

9.1.3 visual studio中的“封装字段”重构 212

9.1.4 对象状态的保持 213

9.1.5 类 214

9.1.6 对象标识 215

9.1.7 作为基本构建块的对象 216

9.1.8 根对象 216

9.1.9 对象的生存期和垃圾回收 217

9.2 类的设计 218

9.2.1 使用分析产物 219

9.2.2 类是名词,操作是动词 222

9.2.3 类、责任和协作者 226

9.2.4 在头脑风暴会议中运用卡片 231

9.2.5 实体和关系 234

9.3 发现隐藏的类 235

9.3.1 处理数据库驱动的设计 235

9.3.2 从过程式设计到面向对象设计的转移 239

9.3.3 领域层、表示层和持久化层的分离 246

9.3.4 发现对象与rent-a-wheels应用程序 251

9.4 小结 260

第10章 面向对象的高级概念和相关的重构 261

10.1 继承、多态性和泛型 261

10.1.1 继承 262

10.1.2 类继承与接口继承 265

10.1.3 多态性 266

10.1.4 泛型 269

10.2 继承的滥用和重构解决方案 271

10.2.1 误用为继承的组合和其他误用情形 274

10.2.2 继承的重构——打印系统的示例 281

10.2.3 用委托替代打印系统中的继承 287

10.3 泛型的使用 300

10.4 rent-a-wheels应用程序中的继承和泛型 304

10.4.1 提取超类 304

10.4.2 运用泛型 305

10.4.3 提取dataobjectsprovider类 306

10.5 小结 310

第11章 大规模的代码组织 313

11.1 命名空间 313

11.1.1 命名指导原则与命名空间的组织 313

11.1.2 嵌套的命名空间 314

11.1.3 修改默认命名空间的名称 314

11.1.4 使用using指令 315

11.2 程序集 316

11.2.1 二进制重用 317

11.2.2 命名空间组织的指导原则 319

11.2.3 依赖性方面的考虑 323

11.3 c#项目文件的结构组织 331

11.4 rent-a-wheels中命名空间的组织与windows窗体继承 338

11.4.1 通过抽象窗体辅助类模式提取父管理窗体 338

11.4.2 命名空间和程序集的重组 346

11.5 小结 347

第12章 重构为模式 349

12.1 什么是设计模式 349

12.1.1 设计模式的定义 350

12.1.2 模式的分类 351

12.1.3 模式的元素 351

12.1.4 权衡设计模式的利弊 352

12.1.5 模式的使用 352

12.2 设计模式的示例:抽象工厂模式 352

12.2.1 抽象工厂模式的使用 353

12.2.2 解决方案 362

12.2.3 结果 365

12.3 依赖注入模式 367

12.3.1 使用依赖注入的问题 368

12.3.2 解决方案 370

12.3.3 基于构造函数的注入与基于属性的注入 371

12.3.4 应该注入什么服务实现 371

12.3.5 di模式的优点 373

12.3.6 重构成di 375

12.4 重构成模式与rent-a-wheels应用程序 375

12.4.1 消除重复.net架构功能的代码 376

12.4.2 通过依赖注入向gui类中注入data类 376

12.4.3 crud持久化模式 380

12.5 小结 380

第13章 linq和c# 3.0的其他增强功能 381

13.1 局部变量的类型推断 381

13.1.1 自动实现的属性 383

13.1.2 扩展方法 385

13.1.3 对象、数组和集合的初始化器 392

13.1.4 通过linq查询对象 393

13.1.5 旧示例换新颜 397

13.1.6 通过linq to sql进行对象-关系映射 404

13.1.7 linq与rent-a-wheels应用程序 408

13.2 小结 417

第14章 web技术简史与asp.net重构工具 419

14.1 refactor! for asp.net 420

14.1.1 调用refactor! for asp.net 420

14.1.2 refactor! for asp.net的用户界面 422

14.2 html的历史及其遗留问题 427

14.3 紧跟web 434

14.3.1 visual studio和xhtml 435

14.3.2 xml和编码 436

14.3.3 visual studio中html的dtd验证 437

14.3.4 提供严格的xhtml 438

14.4 小结 439

第15章 asp.net应用程序的重构 441

15.1 html的重构 441

15.1.1 格式完整的xhtml文档 441

15.1.2 xhtml的有效性 444

15.1.3 用于升级遗留的、非遵从xhtml的标记的工具支持 446

15.1.4 以优美的格式打印html文档 446

15.1.5 将结构与表示分离 448

15.1.6 通过rest来使用http 454

15.2 asp.net代码的重构 459

15.2.1 asp.net代码模型:单文件和代码隐藏 459

15.2.2 母版页面 463

15.2.3 web用户控件与自定义的服务器控件 467

15.3 rent-a-wheels与asp.net重构 472

15.4 小结 475

附录a rent-a-wheels原型的内部机理 477

附录b refactor! for asp.net揭密 497

内容摘要:

重构是迅速发现并修复有问题的代码的一种高效的方式。在《代码重构(C#&ASP.NET版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码。此外,还将学习如何从头开始构建原型应用程序,然后利用重构技术将原型转换为正确设计的、企业级的应用程序。通过一步一步的指导,您将更好地理解不同的代码问题以及重构的转换。很多这些转换都是从现实世界的情形中开发出来的,这些都是关键的业务决策的结果。此外,《代码重构(C#&ASP.NET版)》还将介绍重构技术的标准定义,这样您就可以在工作中引用到它。《代码重构(C#&ASP.NET版)》涵盖的重构技术将让您变得效率更高。您将能使用这些信息对修改做出反应并改进既有代码的设计。 主要内容:组装重构工具箱的步骤、完成单元测试的技术、重构为模式的技巧、如何使用重构升级既有的c#和asp.net代码、利用方法提取消除重复代码的方式、如何让代码变得更简单、更易于修改以及更容易理解、所有关于面向对象的理论和设计模式、利用linq和其他c#3.0增强功能的技巧。 读者对象:《代码重构(C#&ASP.NET版)》适用于那些想要学习通过重构工具和功能来高效地管理和修改代码的c#和asp.net开发人员。 点击链接进入英文版: Professional Refactoring in C# & ASP.NET

编辑推荐:

《代码重构(C#&ASP.NET版)》由清华大学出版社出版。

书籍规格:

书籍详细信息
书名代码重构站内查询相似图书
9787302255550
如需购买下载《代码重构》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位清华大学出版社
版次1版印次1
定价(元)66.0语种简体中文
尺寸26 × 19装帧平装
页数印数

书籍信息归属:

代码重构是清华大学出版社于2011.出版的中图分类号为 TP393.092 ,TP312 的主题关于 C语言-程序设计 ,网页制作工具-程序设计 的书籍。