Secret Assumption of Agile (Chinese)

121
Copyright © 2009 by Fred George 1 Tuesday, September 15, 2009

description

The secret assumption of Agile is that you write programs that are easy to change. The presentation talks about how very different that style can be. Case studies from real project reinforce these techniques. Finally, the training for this style is described. (most slides in English, too)

Transcript of Secret Assumption of Agile (Chinese)

Page 1: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 1

Tuesday, September 15, 2009

Page 2: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

敏捷背后的隐秘设想Fred George

TrafficBroker, Ltd., London, United Kingdom

1

The Secret Assumption

of Agile

Tuesday, September 15, 2009

Page 3: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

敏捷是富有成效的

2

Agile is Productive

Tuesday, September 15, 2009

Page 4: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

敏捷是富有成效的

2

传统的 Traditional

12 个月 Months

$28 每小时 per Hour

$2,000,000

Agile is Productive

Tuesday, September 15, 2009

Page 5: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

敏捷是富有成效的

2

传统的 Traditional

12 个月 Months

$28 每小时 per Hour

$2,000,000

敏捷 Agile

8 个月.............3 个月5 个月8 个月

$87 每小时

$1,100,0006x

Agile is Productive

Tuesday, September 15, 2009

Page 6: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

如何?

3

How?

Tuesday, September 15, 2009

Page 7: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

如何?

3

1.能够变化的代码

2.精益管理

3.过程的力量

How?

Code That Can Change

Lean Management

Processing Power

Tuesday, September 15, 2009

Page 8: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

“在能够变化的程序中,对象才有用武之地。”Rick DeNatale, IBM

1988

4

“Objects are only good for programs that change.”

Tuesday, September 15, 2009

Page 9: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

假定容易变化的故事

5

Stories Assume Easy Change

Tuesday, September 15, 2009

Page 10: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

假定容易变化的故事

5

Stories Assume Easy Change

StoryStory Story Story

StoryStory Story Story

Tuesday, September 15, 2009

Page 11: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

假定容易变化的故事

5

Stories Assume Easy Change

Story

Story Story Story

StoryStory Story Story

Tuesday, September 15, 2009

Page 12: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

假定容易变化的故事

5

Stories Assume Easy Change

StoryStoryStory

Story

StoryStory

Story

Story

Tuesday, September 15, 2009

Page 13: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

Typical Program

Tuesday, September 15, 2009

Page 14: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

public void foo( ) {........................

}

Typical Program

Tuesday, September 15, 2009

Page 15: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

public void foo( ) {........................

}

多少行代码?

Typical Program

How many lines?

Tuesday, September 15, 2009

Page 16: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

public void foo( ) {........................

}

多少行代码?

每个方法2.3行

Typical Program

How many lines?

Tuesday, September 15, 2009

Page 17: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

public void foo( ) {........................

}

多少行代码?

每个方法2.3行每个类25行

Typical Program

How many lines?

Tuesday, September 15, 2009

Page 18: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

典型的程序

6

public void foo( ) {........................

}

多少行代码?

每个方法2.3行每个类25行

Smalltalk:每个方法1.1行

Typical Program

How many lines?

Tuesday, September 15, 2009

Page 19: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

Replacement Application

Tuesday, September 15, 2009

Page 20: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

Replacement Application

Tuesday, September 15, 2009

Page 21: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

旧的 Old

Java

Oracle DB

Web UI

Replacement Application

Tuesday, September 15, 2009

Page 22: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

旧的 Old

Java

Oracle DB

Web UI

新的 New

Java

Oracle DB

Web UI

Replacement Application

Tuesday, September 15, 2009

Page 23: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

旧的 Old

Java

Oracle DB

Web UI

72 Classes

新的 New

Java

Oracle DB

Web UI

Replacement Application

Tuesday, September 15, 2009

Page 24: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

换掉应用

7

旧的 Old

Java

Oracle DB

Web UI

72 Classes

新的 New

1400 Classes

Java

Oracle DB

Web UI

Replacement Application

Tuesday, September 15, 2009

Page 25: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

Tasking Cycle

Tuesday, September 15, 2009

Page 26: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务

Tasking Cycle

Tuesday, September 15, 2009

Page 27: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

Tasking Cycle

Tuesday, September 15, 2009

Page 28: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试

Tasking Cycle

Tuesday, September 15, 2009

Page 29: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试代码

Tasking Cycle

Tuesday, September 15, 2009

Page 30: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试代码

Tasking Cycle

Tuesday, September 15, 2009

Page 31: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试代码

集成

Tasking Cycle

Tuesday, September 15, 2009

Page 32: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试代码

集成

Tasking Cycle

Tuesday, September 15, 2009

Page 33: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

8

任务设计

测试代码

集成

交付

Tasking Cycle

Tuesday, September 15, 2009

Page 34: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期案例学习

9

任务设计

测试代码

集成

Task Cycle Case Study

Tuesday, September 15, 2009

Page 35: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期案例学习

9

任务设计

测试代码

集成1,000,000 行J2EE代码50 个程序员8000 个测试

Task Cycle Case Study

Tuesday, September 15, 2009

Page 36: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期案例学习

9

任务设计

测试代码

集成1,000,000 行J2EE代码50 个程序员8000 个测试周期长度?

Task Cycle Case Study

Tuesday, September 15, 2009

Page 37: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期案例学习

9

任务设计

测试代码

集成1,000,000 行J2EE代码50 个程序员8000 个测试周期长度?

2-4 小时

Task Cycle Case Study

Tuesday, September 15, 2009

Page 38: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

10

任务设计

测试代码

集成

Tasking Cycle

Tuesday, September 15, 2009

Page 39: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

10

任务设计

测试代码

集成

15 分钟

Tasking Cycle

Tuesday, September 15, 2009

Page 40: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

10

任务设计

测试代码

集成

15 分钟

15 分钟

Tasking Cycle

Tuesday, September 15, 2009

Page 41: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

任务周期

10

任务设计

测试代码

集成

15 分钟

15 分钟

Tasking Cycle

Tuesday, September 15, 2009

Page 42: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 11

Tuesday, September 15, 2009

Page 43: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 12

Tuesday, September 15, 2009

Page 44: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

12

Simple Design

Tuesday, September 15, 2009

Page 45: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

1. 是可行的 Works

12

Simple Design

Tuesday, September 15, 2009

Page 46: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

1. 是可行的 Works

2. 沟通 Communicates

12

Simple Design

Tuesday, September 15, 2009

Page 47: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

1. 是可行的 Works

2. 沟通 Communicates

3. 无重复代码 No duplicate code

12

Simple Design

Tuesday, September 15, 2009

Page 48: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

1. 是可行的 Works

2. 沟通 Communicates

3. 无重复代码 No duplicate code

4. 用最少的类和方法 Least classes and methods

12

Simple Design

Tuesday, September 15, 2009

Page 49: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

简单设计

1. 是可行的 Works

2. 沟通 Communicates

3. 无重复代码 No duplicate code

4. 用最少的类和方法 Least classes and methods

用在应用和测试中 Applies to Application and Tests

12

Simple Design

Tuesday, September 15, 2009

Page 50: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

RefactoringMartin Fowler

13

Tuesday, September 15, 2009

Page 51: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 14

任务设计

测试代码

集成

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 52: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 14

任务设计

测试代码

集成

简单设计

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 53: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 14

任务设计

测试代码

集成

简单设计

重构

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 54: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

Refactoring to PatternsJoshua Kerievsky

15

Tuesday, September 15, 2009

Page 55: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

重构

16

任务设计

测试代码

集成

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 56: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

重构引入模式

16

任务设计

测试代码

集成

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 57: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

重构引入模式

重构

16

任务设计

测试代码

集成

任务周期Tasking Cycle

Tuesday, September 15, 2009

Page 58: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 59: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度圈复杂度 Cyclomatic Complexity

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 60: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度圈复杂度 Cyclomatic Complexity

100分表示最糟 100 is Bad

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 61: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度圈复杂度 Cyclomatic Complexity

100分表示最糟 100 is Bad

“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 62: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度圈复杂度 Cyclomatic Complexity

100分表示最糟 100 is Bad

“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect

圈复杂度: 1.8 Cyclomatic Complexity

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 63: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

案例分析:复杂度圈复杂度 Cyclomatic Complexity

100分表示最糟 100 is Bad

“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect

圈复杂度: 1.8 Cyclomatic Complexity

9 周的测试: 1个bug,两小时内得到修复

17

Case Study: Complexity

Cyclomatic Complexity

100分表示最糟

“...never seen less than 5” - Senior Architect

Cyclomatic Complexity: 1.8

9 week test: 1 bug, fixed within 2 hours

Tuesday, September 15, 2009

Page 64: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

Tuesday, September 15, 2009

Page 65: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

Tuesday, September 15, 2009

Page 66: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

Tuesday, September 15, 2009

Page 67: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

Tuesday, September 15, 2009

Page 68: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

培训

经验

Tuesday, September 15, 2009

Page 69: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 18

通往驾轻就熟之路Path to Proficiency

培训

经验

实战

Tuesday, September 15, 2009

Page 70: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

产品请求(伦敦)

19

Tuesday, September 15, 2009

Page 71: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

产品请求(伦敦)

19

Tuesday, September 15, 2009

Page 72: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

产品请求(伦敦)

19

23 个故事15 天

28个故事12 天

班5 天

Tuesday, September 15, 2009

Page 73: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

产品请求(伦敦)

19

23 个故事15 天

28个故事12 天

班5 天

回报: (Payback)

11天

Tuesday, September 15, 2009

Page 74: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

20

OO Boot Camp

Tuesday, September 15, 2009

Page 75: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

20

“...教会你如何像程序员一样思考...”

OO Boot Camp

“...teaches you to think like a programmer...”

Tuesday, September 15, 2009

Page 76: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 21

Tuesday, September 15, 2009

Page 77: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 21

某咨询公司首席设计师 评论美国某大型制造公司的CIO

Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.

Tuesday, September 15, 2009

Page 78: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 21

“上课15分钟以后,我意识到我对编程一无所知”某咨询公司首席设计师 评论美国某大型制造公司的CIO

“15 minutes after the class started, I realized I knew nothing about programming.”

Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.

Tuesday, September 15, 2009

Page 79: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

22

OO Boot Camp

Tuesday, September 15, 2009

Page 80: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

22

历史:自1995年以来 History: Since 1995

1000多名学生;3个国家 Over 1000 Students; 3 countries

OO Boot Camp

Tuesday, September 15, 2009

Page 81: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

22

历史:自1995年以来 History: Since 1995

1000多名学生;3个国家 Over 1000 Students; 3 countries

Java, VB, C#, Ruby

OO Boot Camp

Tuesday, September 15, 2009

Page 82: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

22

历史:自1995年以来 History: Since 1995

1000多名学生;3个国家 Over 1000 Students; 3 countries

Java, VB, C#, Ruby苏格拉底方法(问题─回答─问题) Socratic Method (Question - Answer - Question)

OO Boot Camp

Tuesday, September 15, 2009

Page 83: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

OO训练营

22

历史:自1995年以来 History: Since 1995

1000多名学生;3个国家 Over 1000 Students; 3 countries

Java, VB, C#, Ruby苏格拉底方法(问题─回答─问题) Socratic Method (Question - Answer - Question)

超过60%课堂编程练习 60%+ Lab

结对编程 Pair Programming

先写测试(15分钟的周期) Test First (15 Minute Cycle)

学生展示解决方案 Students Present Solutions

OO Boot Camp

Tuesday, September 15, 2009

Page 84: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 23

Tuesday, September 15, 2009

Page 85: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

大师

熟练工

新手

23

Tuesday, September 15, 2009

Page 86: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 24

Tuesday, September 15, 2009

Page 87: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 24

熟练工

新手

2-6 个月

Tuesday, September 15, 2009

Page 88: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George 24

大师

熟练工

新手

2-6 个月

2 年甚至永远无法完成

Tuesday, September 15, 2009

Page 89: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第一部分:原则

25

Part 1: Principles

Tuesday, September 15, 2009

Page 90: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第一部分:原则封装 Encapsulation

对象关系 Object Relationships

集成 Inheritance

委派 Delegation

多态 Polymorphism

对象协作 Collaborating Objects

接口 Interfaces

编程模式 Coding Patterns

重构 Refactoring

递归 Recursion

25

Part 1: Principles

Tuesday, September 15, 2009

Page 91: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第一部分:原则封装 Encapsulation

对象关系 Object Relationships

集成 Inheritance

委派 Delegation

多态 Polymorphism

对象协作 Collaborating Objects

接口 Interfaces

编程模式 Coding Patterns

重构 Refactoring

递归 Recursion

25

40-50 个小时

Part 1: Principles

Tuesday, September 15, 2009

Page 92: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第二部分:设计模式

26

Part 2: Design Patterns

Tuesday, September 15, 2009

Page 93: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第二部分:设计模式基本原理 Rationale

模式 vs. 原则 Patterns vs.

Principles

观察者模式 Observer Pattern

迭代器模式 Iterator Pattern

中介者模式 Mediator Pattern

组合模式 Composite Pattern

访问者模式 Visitor Pattern

建造者模式 Builder Pattern

协作 Concerts

模式调查 Survey of Patterns

26

Part 2: Design Patterns

Tuesday, September 15, 2009

Page 94: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

第二部分:设计模式基本原理 Rationale

模式 vs. 原则 Patterns vs.

Principles

观察者模式 Observer Pattern

迭代器模式 Iterator Pattern

中介者模式 Mediator Pattern

组合模式 Composite Pattern

访问者模式 Visitor Pattern

建造者模式 Builder Pattern

协作 Concerts

模式调查 Survey of Patterns

26

40-50 个小时

Part 2: Design Patterns

Tuesday, September 15, 2009

Page 95: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的陈述

27

Suspicious Statements

Tuesday, September 15, 2009

Page 96: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的陈述

case - 几乎一直错 Almost always wrong

27

Suspicious Statements

Tuesday, September 15, 2009

Page 97: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的陈述

case - 几乎一直错 Almost always wrong

else - 多数错 Mostly wrong

27

Suspicious Statements

Tuesday, September 15, 2009

Page 98: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的陈述

case - 几乎一直错 Almost always wrong

else - 多数错 Mostly wrong

if - 可疑的 Suspicious

除非保证从句位于方法的开始 Unless guard clause at start of method

27

Suspicious Statements

Tuesday, September 15, 2009

Page 99: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的陈述

case - 几乎一直错 Almost always wrong

else - 多数错 Mostly wrong

if - 可疑的 Suspicious

除非保证从句位于方法的开始 Unless guard clause at start of method

可替换全部这些的设计模式 Substitute Design Patterns for all these

27

Suspicious Statements

Tuesday, September 15, 2009

Page 100: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的方法

28

Suspicious Methods

Tuesday, September 15, 2009

Page 101: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的方法

getters - 违背封装 Violates Encapsulation

28

Suspicious Methods

Tuesday, September 15, 2009

Page 102: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的方法

getters - 违背封装 Violates Encapsulation

setters - 更差的:违背封装和对象的完善 Worse: violates Encapsulation and Object integrity

28

Suspicious Methods

Tuesday, September 15, 2009

Page 103: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的方法

getters - 违背封装 Violates Encapsulation

setters - 更差的:违背封装和对象的完善 Worse: violates Encapsulation and Object integrity

拥有2级或以上缩进的方法 Methods with 2 or more levels of indenting

28

Suspicious Methods

Tuesday, September 15, 2009

Page 104: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的类

29

Suspicious Classes

Tuesday, September 15, 2009

Page 105: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的类

接口有特殊命名约定Special naming conventions for Interfaces

29

Suspicious Classes

Tuesday, September 15, 2009

Page 106: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的类

接口有特殊命名约定Special naming conventions for Interfaces

接口有单一的实现类Interface with a single implementing Class

29

Suspicious Classes

Tuesday, September 15, 2009

Page 107: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

可疑的类

接口有特殊命名约定Special naming conventions for Interfaces

接口有单一的实现类Interface with a single implementing Class

类有超过2个的实例变量Classes with more than 2 instance variables

29

Suspicious Classes

Tuesday, September 15, 2009

Page 108: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

Results

Tuesday, September 15, 2009

Page 109: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

退学的 Dropouts

熟练工 Journeymen

预言者 Predictors

保留 Retention

支持 Support

20%

20%

架构、设计、多语言

必须在一个月之内使用Must be used within a month

熟练工、大师 Journeymen, Masters

Results

Tuesday, September 15, 2009

Page 110: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

退学的 Dropouts

熟练工 Journeymen

预言者 Predictors

保留 Retention

支持 Support

20%

20%

架构、设计、多语言

必须在一个月之内使用Must be used within a month

熟练工、大师 Journeymen, Masters

Results

Tuesday, September 15, 2009

Page 111: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

退学的 Dropouts

熟练工 Journeymen

预言者 Predictors

保留 Retention

支持 Support

20%

20%

架构、设计、多语言

必须在一个月之内使用Must be used within a month

熟练工、大师 Journeymen, Masters

Results

Tuesday, September 15, 2009

Page 112: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

退学的 Dropouts

熟练工 Journeymen

预言者 Predictors

保留 Retention

支持 Support

20%

20%

架构、设计、多语言

必须在一个月之内使用Must be used within a month

熟练工、大师 Journeymen, Masters

Results

Tuesday, September 15, 2009

Page 113: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结果

30

退学的 Dropouts

熟练工 Journeymen

预言者 Predictors

保留 Retention

支持 Support

20%

20%

架构、设计、多语言

必须在一个月之内使用Must be used within a month

熟练工、大师 Journeymen, Masters

Results

Tuesday, September 15, 2009

Page 114: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

Maintenance维护

31

Tuesday, September 15, 2009

Page 115: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

Maintenance维护

31

旧的 Old

Java

Oracle DB

Web UI

72 Classes

新的 New

1400 Classes

Java

Oracle DB

Web UI

Tuesday, September 15, 2009

Page 116: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

转变计划

32

Transition Plan

Tuesday, September 15, 2009

Page 117: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

转变计划

32

没有文档 No Documentation

没有培训 No Training

没有时间 No Time

Transition Plan

Tuesday, September 15, 2009

Page 118: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

转变计划

32

没有文档 No Documentation

没有培训 No Training

没有时间 No Time

统统没问题! No Problem!

Transition Plan

Tuesday, September 15, 2009

Page 119: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

结对编程的团队

33

Team with Pair Programming

Tuesday, September 15, 2009

Page 120: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

问题?

34

Tuesday, September 15, 2009

Page 121: Secret Assumption of Agile (Chinese)

Copyright © 2009 by Fred George

问题?

34

谢谢

Tuesday, September 15, 2009