当前位置:首页 > 工业技术
敏捷软件开发  原则、模式与实践 C#版  英文注释版
敏捷软件开发  原则、模式与实践 C#版  英文注释版

敏捷软件开发 原则、模式与实践 C#版 英文注释版PDF电子书下载

工业技术

  • 电子书积分:20 积分如何计算积分?
  • 作 者:(美)马丁(RobertC.Martin),马丁(MicahMartin)著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:7115165076
  • 页数:732 页
图书介绍:本书意在架起.NET社团和其他开发者社团之间的桥梁,希望.NET程序员在阅读它之后能够获得更好构建软件的方法,希望他们可以开始使用更好的软件实践、创建更好地的设计并提升.NET应用的质量标准。书中使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程,包含了极具价值的可重用的C#源代码,还重点讲述了如何使用UML和设计模式解决面向客户系统的问题。
《敏捷软件开发 原则、模式与实践 C#版 英文注释版》目录

Section Ⅰ:Agile Development敏捷开发 1

Chapter 1:Agile Practices敏捷实践 3

The Agile Alliance敏捷联盟 4

Individuals and Interactions over Processes and Tools人和交互重于过程和工具 5

Working Software over Comprehensive Documentation可以工作的软件重于面面俱到的文档 6

Customer Collaboration over Contract Negotiation客户合作重于合同谈判 6

Responding to Change over Following a Plan随时应对变化重于遵循计划 7

Principles原则 8

Conclusion结论 10

Bibliography参考文献 11

Chapter 2:Overview of Extreme Programming极限编程概述 13

The Practices of Extreme Programming极限编程实践 14

Whole Team完整团队 14

User Stories用户故事 14

Short Cycles短交付周期 15

Acceptance Tests验收测试 15

Pair Programming结对编程 16

Test-Driven Development(TDD)测试驱动开发 17

Collective Ownership集体所有权 17

Continuous Integration持续集成 17

Sustainable Pace可持续的开发速度 18

Open Workspace开放的工作空间 18

The Planning Game计划游戏 19

Simple Design简单设计 19

Refactoring重构 20

Metaphor隐喻 21

Conclusion结论 22

Bibliography参考文献 22

Chapter 3:Planning计划 23

Initial Exploration初始探索 24

Spiking,Splitting,and Velocity探究、分解和速度 24

Release Planning发布计划 25

Iteration Planning迭代计划 25

Defining“Done”定义“完成” 26

Task Planning任务计划 26

Iterating迭代 27

Tracking跟踪 28

Conclusion结论 29

Bibliography参考文献 29

Chapter 4:Testing测试 31

Test-Driven Development测试驱动开发 32

Example of Test-First Design测试优先设计的例子 32

Test Isolation测试促使模块之间隔离 33

Serendipitous Decoupling意外获得的解耦合 36

Acceptance Tests验收测试 36

Serendipitous Architecture意外获得的构架 37

Conclusion结论 38

Bibliography参考文献 39

Chapter 5:Refactoring重构 41

A Simple Example of Refactoring:Generating Primes素数产生程序:一个简单的重构示例 42

Unit Testing单元测试 44

Refactoring重构 45

The Final Reread最后审视 49

Conclusion结论 53

Bibliography参考文献 54

Chapter 6:A Programming Episode一次编程实践 55

The Bowling Game保龄球比赛 56

Conclusion结论 98

Overview of the Rules of Bowling保龄球规则概述 99

Section Ⅱ:Agile Design敏捷设计 101

Chapter 7:What Is Agile Design什么是敏捷设计 103

Design Smells设计臭味 104

Design Smells—The Odors of Rotting Software设计坏味——腐化软件的气味 104

Rigidity僵化性 105

Fragility脆弱性 105

Immobility顽固性 105

Viscosity粘滞性 105

Needless Complexity不必要的复杂性 106

Needless Repetition不必要的重复 106

Opacity晦涩性 107

Why Software Rots软件为何会腐化 107

The Copy Program Copy程序 108

A Familiar Scenario熟悉的场景 108

Agile Design of the Copy Program Copy程序的敏捷设计 111

Conclusion结论 113

Bibliography参考文献 114

Chapter 8:The Single-Responsibility Principle(SRP) SRP:单一职责原则 115

Defining a Responsibility定义职责 117

Separating Coupled Responsibilities分离耦合的职责 119

Persistence持久化 119

Conclusion结论 119

Bibliography参考文献 120

Chapter 9:The Open/Closed Principle(OCP) OCP:开放-封闭原则 121

Description of OCP OCP概述 122

The Shape Application Shape应用程序 124

Violating OCP违反OCP 124

Conforming to OCP遵循OCP 127

Anticipation and“Natural”Structure预测变化和“贴切的”结构 128

Putting the“Hooks”In放置吊钩 129

Using Abstraction to Gain Explicit Closure使用抽象获得显式封闭 130

Using a Data-Driven Approach to Achieve Closure使用“数据驱动”的方法获取封闭性 131

Conclusion结论 132

Bibliography参考文献 133

Chapter 10:The Liskov Substitution Principle(LSP) LSP:Liskov替换原则 135

Violations of LSP违反LSP的情形 136

A Simple Example简单例子 136

A More Subtle Violation更微妙的违反情形 138

A Real-World Example实际的例子 143

Factoring Instead of Deriving用提取公共部分的方法代替继承 148

Heuristics and Conventions启发式规则和习惯用法 150

Conclusion结论 151

Bibliography参考文献 151

Chapter 11:The Dependency-Inversion Principle(DIP) DIP:依赖倒置原则 153

Layering层次化 154

Ownership Inversion倒置的接口所有权 155

Dependence on Abstractions依赖于抽象 156

A Simple DIP Example简单的DIP示例 157

Finding the Underlying Abstraction找出潜在的抽象 158

The Furnace Example熔炉示例 160

Conclusion结论 161

Bibliography参考文献 162

Chapter 12:The Interface Segregation Principle(ISP) ISP:接口隔离原则 163

Interface Pollution接口污染 163

Separate Clients Mean Separate Interfaces分离客户就是分离接口 165

Class Interfaces versus Object Interfaces类接口与对象接口 166

Separation Through Delegation使用委托分离接口 167

Separation Through Multiple Inheritance使用多重继承分离接口 168

The ATM User Interface Example ATM用户界面的例子 169

Conclusion结论 174

Bibliography参考文献 175

Chapter 13:Overview of UML for C#Programmers C#程序员UML概观 177

Class Diagrams类图 180

Object Diagrams对象图 182

Sequence Diagrams顺序图 182

Collaboration Diagrams协作图 183

State Diagrams状态图 184

Conclusion结论 185

Bibliography参考文献 185

Chapter 14:Working with Diagrams使用UML 187

Why Model?为什么建模 187

Why Build Models of Software?为什么构建软件模型 188

Should We Build Comprehensive Designs Before Coding?编码前应该构建面面俱到的设计吗 188

Making Effective Use of UML有效使用UML 189

Communicating with Others与他人交流 189

Road Maps脉络图 191

Back-End Documentation项目结束文档 192

What to Keep and What to Throw Away要保留的和要丢弃的 192

Iterative Refinement迭代式改进 194

Behavior First行为优先 194

Check the Structure检查结构 196

Envisioning the Code想象代码 198

Evolution of Diagrams图的演化 199

When and How to Draw Diagrams何时以及如何绘制图示 200

When to Draw Diagrams and When to Stop何时要画图,何时不要画图 200

CASE Tools CASE工具 201

But What About Documentation?那么,文档呢 202

Conclusion结论 202

Chapter 15:State Diagrams状态图 203

The Basics基础知识 204

Special Events特定事件 205

Superstates超状态 206

Initial and Final Pseudostates初始伪状态和结束伪状态 207

Using FSM Diagrams使用FSM图示 208

Conclusion结论 209

Chapter 16:Object Diagrams对象图 211

A Snapshot in Time即时快照 212

Active Objects主动对象 213

Conclusion结论 217

Chapter 17:Use Cases用例 219

Writing Use Cases编写用例 220

Alternate Courses备选流程 221

What Else?其他东西呢 221

Diagramming Use Cases用例图 222

Conclusion结论 223

Bibliography参考文献 223

Chapter 18:Sequence Diagrams顺序图 225

The Basics基础知识 226

Objects,Lifelines,Messages,and Other Odds and Ends对象、生命线、消息及其他 226

Creation and Destruction创建和析构 227

Simple Loops简单循环 228

Cases and Scenarios时机和场合 228

Advanced Concepts高级概念 232

Loops and Conditions循环和条件 232

Messages That Take Time耗费时间的消息 233

Asynchronous Messages异步消息 235

Multiple Threads多线程 239

Active Objects主动对象 240

Sending Messages to Interfaces向接口发送消息 240

Conclusion结论 241

Chapter 19:Class Diagrams类图 243

The Basics基础知识 244

Classes类 244

Association关联 245

Inheritance继承 246

An Example Class Diagram类图示例 247

The Details细节 249

Class Stereotypes类衍型 249

Abstract Classes抽象类 250

Properties属性 251

Aggregation聚集 252

Composition组合 253

Multiplicity多重性 254

Association Stereotypes关联衍型 255

Nested Classes内嵌类 256

Association Classes关联类 256

Association Qualifiers关联修饰符 257

Conclusion结论 258

Bibliography参考文献 258

Chapter 20:Heuristics and Coffee咖啡的启示 259

The Mark IV Special Coffee Maker Mark Ⅳ型专用咖啡机 260

Specification规格说明书 260

A Common but Hideous Solution常见的丑陋方案 263

Imaginary Abstraction虚构的抽象 265

An Improved Solution改进方案 266

Implementing the Abstract Model实现抽象模型 270

The Benefits ofThis Design这个设计的好处 277

OOverkill面向对象过度设计 279

Bibliography参考文献 292

Section Ⅲ:The Payroll Case Study薪水支付案例研究 293

Rudimentary Specification of the Payroll System薪水支付系统的初步规格说明 294

Exercise练习 295

Use Case 1:Add New Employee用例1:增加新雇员 295

Use Case 2:Deleting an Employee用例2:删除雇员 295

Use Case 3:Post a Time Card用例3:登记考勤卡 296

Use Case 4:Posting a Sales Receipt用例4:登记销售凭条 296

Use Case 5:Posting a Union Service Charge用例5:登记工会服务费 296

Use Case 6:Changing Employee Details用例6:更改雇员明细 296

Use Case 7:Run the Payroll for Today用例7:现在运行薪水支付系统 297

Chapter 21:Command and Active Object:Versatility and Multitasking COMMAND模式和ACTIVE OBJECT模式:多功能与多任务 299

Simple Commands简单的Command 300

Transactions事务 302

Physical and Temporal Decoupling实体上解耦和时间上解耦 304

Temporal Decoupling时间上解耦 304

Undo Method Undo()方法 304

Active Object ACTIVE OBJECT模式 305

Conclusion结论 310

Bibliography参考文献 310

Chapter 22:Template Method and Strategy:Inheritance versus Delegation TEMPLATE METHOD模式和STRATEGY模式:继承和委托 311

Template Method TEMPLATE METHOD模式 312

Pattern Abuse滥用模式 315

Bubble Sort冒泡排序 316

Strategy STRATEGY模式 319

Conclusion结论 324

Bibliography参考文献 324

Chapter 23:Facade and Mediator FACADE模式和MEDIATOR模式 325

Facade FACADE模式 325

Mediator MEDIATOR模式 327

Conclusion结论 329

Bibliography参考文献 329

Chapter 24:Singleton and Monostate SINGLETON模式和MONOSTATE模式 331

Singleton SINGLETON模式 332

Benefits SINGLETON模式的好处 334

Costs SINGLETON模式的代价 334

Singleton in Action运用SINGLETON模式 334

Monostate MONOSTATE模式 336

Benefits MONOSTATE模式的好处 337

Costs MONOSTATE模式的代价 338

Monostate in Action运用MONOSTATE模式 338

Conclusion结论 343

Bibliography参考文献 343

Chapter 25:Null Object NULL OBJECT模式 345

Description描述 345

Conclusion结论 348

Bibliography参考文献 348

Chapter 26:The Payroll Case Study:Iteration 1薪水支付案例研究:第一次迭代开始 349

Rudimentary Specification初步的规格说明 350

Analysis by Use Cases基于用例分析 351

Adding Employees增加新雇员 352

Deleting Employees删除雇员 353

Posting Time Cards登记考勤卡 354

Posting Sales Receipts登记销售凭条 354

Posting a Union Service Charge登记工会服务费 355

Changing Employee Details更改雇员明细 356

Payday发薪日 358

Reflection:Finding the Underlying Abstractions反思:找出底层的抽象 360

Employee Payment雇员支付类别抽象 360

Payment Schedule支付时间表抽象 360

Payment Methods支付方式 362

Affiliations从属关系 362

Conclusion结论 363

Bibliography参考文献 363

Chapter 27:The Payroll Case Study:Implementation薪水支付案例研究:实现 365

Transactions事务 366

Adding Employees增加雇员 366

Deleting Employees删除雇员 372

Time Cards,Sales Receipts,and Service Charges考勤卡、销售凭条以及服务费用 373

Changing Employees更改雇员属性 381

What Was I Smoking?犯了什么晕 390

Paying Employees支付雇员薪水 393

Paying Salaried Employees支付领月薪的雇员薪水 396

Paying Hourly Employees支付钟点工薪水 398

Main Program主程序 408

The Database数据库 409

Conclusion结论 411

About This Chapter关于本章 411

Bibliography参考文献 412

Section Ⅳ:Packaging the Payroll System打包薪水支付系统 413

Chapter 28:Principles of Package and Component Design包和组件的设计原则 415

Packages and Components包和组件 416

Principles of Component Cohesion:Granularity组件的内聚性原则:粒度 417

The Reuse/Release Equivalence Principle(REP)重用-发布等价原则 417

The Common Reuse Principle(CRP)共同重用原则 418

The Common Closure Principle(CCP)共同封闭原则 419

Summary of Component Cohesion组件内聚性总结 420

Principles of Component Coupling:Stability组件的耦合性原则:稳定性 420

The Acyclic Dependencies Principle(ADP)无环依赖原则 420

The Stable-Dependencies Principle(SDP)稳定依赖原则 426

The Stable-Abstractions Principle(SAP)稳定抽象原则 431

Conclusion结论 435

Chapter 29:Factory FACTORY模式 437

A Dependency Problem依赖问题 440

Static versus Dynamic Typing静态类型与动态类型 441

Substitutable Factories可替换的工厂 442

Using Factories for Test Fixtures对测试支架使用对象工厂 443

Importance of Factories工厂的重要性 444

Conclusion结论 445

Bibliography参考文献 445

Chapter 30:The Payroll Case Study:Package Analysis薪水支付案例研究:包分析 447

Component Structure and Notation组件结构和符号 448

Applying the Common Closure Principle(CCP)应用CCP 450

Applying the Reuse/Release Equivalence Principle(REP)应用REP 452

Coupling and Encapsulation耦合和封装 454

Metrics度量 455

Applying the Metrics to the Payroll Application度量薪水支付应用程序 457

Object Factories对象工厂 460

Rethinking the Cohesion Boundaries重新思考内聚的边界 461

The Final Packaging Structure最终的包结构 463

Conclusion结论 465

Bibliography参考文献 465

Chapter 31:Composite COMPOSITE模式 467

Composite Commands组合命令 469

Multiplicity or No Multiplicity多重性还是非多重性 470

Conclusion结论 470

Chapter 32:Observer:Evolving into a Pattern OBSERVER——演化至模式 471

The Digital Clock数字时钟 472

The Observer Pattern OBSERVER模式 491

Models模型 491

Management of OOD Principles面向对象设计原则的运用 492

Conclusion结论 493

Bibliography参考文献 494

Chapter 33:Abstract Server,Adapter,and Bridge ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式 495

Abstract Server ABSTRACT SERVER模式 496

Adapter ADAPTER模式 498

The Class Form of Adapter类形式的ADAPTER模式 498

The Modem Problem,Adapters,and LSP调制解调器问题、适配器以及LSP 499

Bridge BRIDGE模式 503

Conclusion结论 505

Bibliography参考文献 506

Chapter 34:Proxy and Gateway:Managing Third-Party APIs PROXY模式和GATEWAY模式:管理第三方API 507

Proxy PROXY模式 508

Implementing Proxy实现PROXY模式 512

Summary小结 525

Databases,Middleware,and Other Third-Party Interfaces数据库、中间件以及其他第三方接口 526

Table Data Gateway TABLE DATA GATEWAY 528

Testing and In-Memory TDGs测试和内存TDG 535

Testing the DB Gateways测试DbGateWay 536

Using Other Patterns with Databases可以用于数据库的其他模式 539

Conclusion结论 541

Bibliography参考文献 541

Chapter 35:Visitor VISITOR模式 543

VISITOR VISITOR模式 544

Acyclic Visitor ACYCLIC VISITOR模式 548

Uses of VISITOR使用VISITOR模式 552

Decorator DECORATOR模式 560

Extension Object EXTENSION OBJECT模式 565

Conclusion结论 576

Bibliography参考文献 577

Chapter 36:State STATE模式 579

Nested Switch/Case Statements嵌套switch/case语句 580

The Internal Scope State Variable内部作用域的状态变量 583

Testing the Actions测试动作 583

Costs and Benefits代价和收益 583

Transition Tables迁移表 584

Using Table Interpretation使用表解释 585

Costs and Benefits代价和收益 586

The State Pattern STATE模式 586

State versus Strategy STATE模式和STRATEGY模式 589

Costs and Benefits代价和收益 590

The State Machine Compiler(SMC)状态机编译器 591

Turnstile.cs Generated by SMC,and Other Support Files SMC生成的Turnstile.cs以及其他支持文件 593

Costs and Benefits代价和收益 598

Classes of State Machine Application状态机应用的场合 598

High-Level Application Policies for GUIs作为GUI中的高层应用策略 599

GUI Interaction Controllers GUI交互控制器 600

Distributed Processing分布式处理 601

Conclusion结论 602

Bibliography参考文献 602

Chapter 37:The Payroll Case Study:The Database薪水支付案例研究:数据库 603

Building the Database构建数据库 604

A Flaw in the Code Design一个代码设计缺陷 605

Adding an Employee增加雇员 607

Transactions事务 618

Loading an Employee加载Employee对象 623

What Remains?还有什么工作 636

Chapter 38:The Payroll User Interface:Model View Presenter薪水支付系统用户界面:Model-View-Presenter 637

The Interface界面 639

Implementation实现 640

Building a Window构建窗口 650

The Payroll Window Payroll窗口 657

The Unveiling真面目 669

Conclusion结论 670

Bibliography参考文献 670

Appendix A:A Satire of Two Companies双公司记 671

Rufus Inc.:Project Kickoff Rufus公司:“日落”项目 671

Rupert Industries:Project Alpha Rupert工业公司:“朝晖”项目 671

Appendix B:What Is Software?什么是软件 687

Index索引 699

相关图书
作者其它书籍
返回顶部