读书人

重构HTML改善Web应用的设计

发布时间: 2010-03-30 03:37:24 作者:

 重构HTML改善Web应用的设计


基本信息出版社:人民邮电出版社
页码:238 页
出版日期:2009年08月
ISBN:7115210470/9787115210470
条形码:9787115210470
版本:第1版
装帧:平装
开本:16
正文语种:中文
丛书名:图灵程序设计丛书Web开发系列
外文书名:Refactoring HTML:Improving the Design of Existing Web Applications

内容简介 《重构HTML改善Web应用的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。《重构HTML改善Web应用的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。《重构HTML改善Web应用的设计》适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。
媒体推荐 “Elliotte的著作在我的书架上始终占据一席之地。……他通过本书把重构的益处带入了HTML世界。”
  ——Martin Fowler
“本书提供了一系列改善现有布局或者更新旧Web应用的技巧,强烈推荐!”
  ——-Amazon.com
编辑推荐 《重构HTML改善Web应用的设计》由人民邮电出版社出版。
世界知名XML专家力作
理论与实践相结合,助你快速改善Web网站及应用
涵盖XHTML、CSS和REST等Web标准
随着网站越来越大,问题开始出现:速度变慢、链接失败、安全性变差、兼容性降低……怎么办?从头开始重建网站总不是明智之举,这需要投入大量时间和财力。其实,你完全可以四两拨千斤,使用简单有效的技术、工具和诀窍来重构既有代码。
世界级专家Elliolte Rusty HaroId在《重构HTML改善Web应用的设计》中采用理论与实践相结合的方式,展示了如何开展HTML重构,使网站具备更好的可靠性、可用性、安全性、可访问性、兼容性,提高网站性能。书中详细描述了如何从过时的代码向现在稳定的Web标准(包括XHTML、CSS和REST)迁徙,并消除诸如基于呈现的标记、状态相关的应用程序和“标签汤”等问题。
《重构HTML改善Web应用的设计》在手,助你的网站实现质的飞跃。Elliotte Rusty Harold世界知名技术作家、程序员,纽约科技大学计算机系副教授,讲授面向对象编程方面的课程。他的网站Cafe con Leche是XML方面的热门网站之一。他著有Effective XML和XML in a Nutshel等一系列知名作品。
目录
Chapter 1:Refactoring,a First Example 重构,第一个例子1
The Starting Point 起点1
The First Step in Refactoring 重构第一步7
Decomposing and Redistributing the Statement Method 分解并重组slalemenl方法8
Replacing the Conditional Logic on Price Code with Polymorphism 用多态代替价格条件逻辑代码34
Final Thoughts 结语52

Chapter 2:Principles in Refactoring 重构原则53
Defining Refactoring 何谓重构53
Why Should You Refactor? 为何重构55
When Should You Refactor? 何时重构57
What Do I Tell My Manager? 怎样说服经理60
Problems with Refactoring 重构的问题62
Refactoring and Design 重构与设计66
Refactoring and Performance 重构与性能69
Where Did Refactoring Come From? 重构的起源71

Chapter 3:Bad Smells in Code(by Kent Beck and Martin Fowler) 代码坏昧75
Duplicated Code 重复代码76
Long Method 过长方法76
Large Class 过长类78
Long Parameter List 过长参数列表78
Divergent Change 发散式变化79
Shotgun Surgery 霰弹式修改80
Feature Envy 特性依恋80
Data Clumps 数据泥团81
Primitive Obsession 基本类型偏执81
Switch Statements switch语句82
Parallel Inheritance Hierarchies 平行继承体系83
Lazy Class 冗余类83
Speculative Generality 理论上的一般性83
Temporary Field 临时字段84
Message Chains 消息链84
Middle Man 中间人85
Inappropriate Intimacy 过度亲密85
Alternative Classes with Different Interfaces 接口不同的等效类 85
Incomplete Library Class 不完整的库类86
Data Class 数据类86
Refused Bequest 拒绝继承87
Comments 注释过多87

Chapter 4:Building Tests 构建测试89
The Value of Self-testing Code 自测试代码的重要性89
The JUnit Testing Framework Junit测试框架91
Adding More Tests 添加更多测试97

Chapter 5:Toward a Catalog of Refactorings 重构目录103
Format of the Refactorings 重构描述的格式103
Finding References 寻找引用105
How Mature Are These Refactorings? 这些重构的成熟度如何 106

Chapter 6:Composing Methods 组合方法109
Extract Method 提取方法110
Inline Method 内联方法117
Inline Temp 内联临时变量119
*Replace Temp with Query 用查询方法代替临时变量120
Introduce Explaining Variable 引入解释性变量124
Split Temporary Variable 分离临时变量128
*Remove Assignments to Parameters 去除参数赋值131
Replace Method with Method Object 用方法对象代替方法135
Substitute Algorithm 替换算法139

Chapter 7:Moving Features Between Objects 在对象之间移动特性 141
*Move Method 移动方法142
Move Field 移动字段146
Extract Class 提取类149
Inline Class 内联类154
Hide Delegate 隐藏委托类157
Remove Middle Man 去除中间人160
Introduce Foreign Method 引入外加方法162
*Introduce Local Extension 引入本地扩展类164

Chapter 8:Organizing Data 组织数据169
Self Encapsulate Field 自封装字段171
Replace Data Value with Object 用对象代替数据值175
Change Value to Reference 将值对象改为引用对象179
Change Reference to Value 将引用对象改为值对象183
Replace Array with Object 用对象代替数组186
Duplicate Observed Data 重复被观察数据189
*Change Unidirectional Associationto Bidirectional 将单向关联改为双向197
Change Bidirectional Association to Unidirectional 将双向关联改为单向200
*Replace Magic Number with Symbolic Constant 用字面常量代替魔数204
Encapsulate Field 封装字段206
Encapsulate Collection 封装集合208
Replace Record with Data Class 用数据类代替记录217
*ReplaceType Code with Class 用类代替类型码218
Replace Type Code with Subclasses 用子类代替类型码223
Replace Type Code with State/Strategy用State/Strategy 代替类型码227
Replace Subclass with Fields 用字段代替子类232

Chapter 9:Simplifying Conditional Expressions 简化条件语句237
Decompose Conditional 分解条件语句238
Consolidate Conditional Expression 合并条件语句240
Consolidate Duplicate Conditional Fragments 合并重复的条件片段243
Remove Control Flag 去除控制标志24
……
序言 仅仅十余年,Web就从一门大有希望的技术演变成了世界基础设施的重要组成部分。在这个绚丽迷人的年代中,涌现了许多有用的资源。一如往常,我们在追求最佳实践的过程中不断地学习技术,而技术本身的成熟也促使我们更好地使用它。
无论多么复杂的Web应用程序,最终都要通过HTML这种通用的网页描述语言呈现在屏幕上。HTML虽然功能非常有限且用途单一,但它也是一门计算机语言。因此,如果想让系统能够轻松迭代进化,必须编写清晰易懂的HTML。但跟任何一门计算机语言一样,甚至与任何文章一样,第一次很难写到位。只要坚定决心,反复尝试,就一定能写出清晰易懂的代码来。
重写代码有引进bug的风险。几年以前,我曾著书讨论过重构技术,它是一种重写代码的严谨的方法,在修订现有软件时能够大幅度降低引入新bug的机会。重构对常规软件语言产生了巨大影响。很多程序员把它作为日常工作的一部分,作为保持代码清晰和提升自己未来工作效率的辅助手段。自动化重构任务的工具也如雨后春笋般涌现,进一步改善了重构的工作流程。
文摘 插图:


从CEO到经理,他们都对HTML故作沉思,拒绝接受重构的提议。这种情况屡见不鲜,虽然他们有很多说法,但通常不外乎:
我们没有时间浪费在清理代码上。现在马上给我实现这个新特性!
对于这条意见我们可以做两种回应。第一,从长远来看,重构可以节省时间;第二,你拥有的时间实际上比想象的多。这两条都是正确的。
从长远来看,重构可以节省时间,但在短期内这也是可能的,因为整洁的代码更容易修复和维护。以岩石作为基础,比以流沙作为基础更为容易和坚固。跟模糊的代码相比,整洁的代码更易查错。实际上,当错误的来源并不明显时,重构通常可以重现问题。重构的过程不仅改变代码本身,也会改变我们对代码的看法,让我们能以前所未有的眼光看待老代码。
读书人网 >图形图像

热点推荐