transformation priority premise (tpp)

37
Transformation Priority Premise @somkiat.cc SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance #CODEMANIA01

Upload: somkiat-puisungnoen

Post on 20-Aug-2015

927 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Transformation Priority Premise (TPP)

Transformation Priority Premise

@somkiat.cc

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

#CODEMANIA01

Page 2: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TEST ?

Page 3: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คณใเวลานานเทาไรdebugging code ?

Page 4: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TDDer ?

Page 5: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

T D D C Y C L E

Page 6: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 7: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

As the tests get more specific,

the code gets more generic- Uncle Bob -

Page 8: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

เดนกาวเลกๆ

Page 9: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

มาหดเดนกน

Page 10: Transformation Priority Premise (TPP)

เรมตนกบ FizzBuzz1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz

ถาตวเลขหาร 3 ลงตว แสดงคาวา Fizz ถาตวเลขหาร 5 ลงตว แสดงคาวา Buzz

ถาตวเลขหาร 3 และ 5 ลงตว แสดงคาวา FizzBuzz วนอนๆ แสดงคาเลขนนๆ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 11: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คดวา code ดแลวหรอ ?

Page 12: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 13: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 14: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Refactoring

เปลยนแปลงโครงสราง code

ไมใการเปลยนพฤตกรรม

ดวยวธการเรยบงาย

Page 15: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Transformation

ในการ Refactoring code

ตองทาควบคกนไปกบ

Page 16: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Transformation

วธการเรยบงาย

าหรบเปลยนพฤตกรรมภายในของ code

Page 17: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Transformation Priority Premise

Transformations have a priority, or a preferred ordering,will prevent impasses,

or long outages in the red/green/refactor cycle.

- Uncle Bob -

Page 18: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Transformation Priority

Page 19: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Transformation PriorityNo. Transformation Name Example

1 no code -> nil no code -> null

2 nil -> simple constant null -> “1”

3 constant -> constant + “1” -> “2”

4 constant -> variable “2” -> number

5 statement -> statements number = “2” -> number = “2”; print(“Data”);

6 unconditional -> conditional no if -> if, ternary if statement

7 variable -> array dog -> [ dog, cat ]

8 array -> collection [ dog, cat ] -> { dog : “โงๆ”, cat : “เหมยว” }

9 statement -> tail recursion a + b -> a + recursion()

10 if -> while if( condition ) -> while( condition )

11 statement -> recursion a + recursion() -> recursion(recursion)

12 expression -> function today - birthdate -> calculateDay(birthday)

13 variable -> assignment day -> day = 10

14 case if( condition ) -> if( condition ) {} else {}

Page 20: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

มาด ทาอะไรกนไปบางNo. Transformation Name FizzBuzz # 1

1 no code -> nil 1. no code -> null

2 nil -> simple constant 2. null -> “1”

3 constant -> constant +

4 constant -> variable 3. “1” -> number

5 statement -> statements

6 unconditional -> conditional 4. no if -> if(number % 3 == 0)

7 variable -> array

8 array -> collection

9 statement -> tail recursion

10 if -> while

11 statement -> recursion

12 expression -> function 6. number % 3 == 0 -> isFizz(number)

13 variable -> assignment

14 case 5. if() {} else if() else {}

Page 21: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คดวา code ดแลวหรอ ?

Page 22: Transformation Priority Premise (TPP)

T D D + T P P

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TPP

Page 23: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คาแนะนา

เลอกการ Transformation ลาดบแรกๆ

Page 24: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คาแนะนา

เลอก test case ทสามารถเขยน code ใหผาน

ดวย transformation ลาดบแรกๆ

Page 25: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ลองกนใหม

Page 26: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

มาด ทาอะไรกนไปบางNo. Transformation Name FizzBuzz # 2

1 no code -> nil no code -> null

2 nil -> simple constant null -> “1”

3 constant -> constant +

4 constant -> variable

5 statement -> statements

6 unconditional -> conditional

7 variable -> array

8 array -> collection

9 statement -> tail recursion

10 if -> while

11 statement -> recursion

12 expression -> function

13 variable -> assignment

14 case

Page 27: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TPP นำเราไปพบอะไร ?

Page 28: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 29: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 30: Transformation Priority Premise (TPP)

ไดแบบนใไหม ?

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 31: Transformation Priority Premise (TPP)

เราสราง feature อยางไร

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Page 32: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TDD + TPP = Simple Logic

Page 33: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TDD + TPP = Better Code

Page 34: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

TDD + TPP = Maintainable Code

Page 35: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

Test ทถกตองทาใหการ Transformtion ไดถกตอง

Page 36: Transformation Priority Premise (TPP)

แหลงอางอง

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html

https://github.com/up1/kata.tpp.fizzbuzz

http://blog.8thlight.com/uncle-bob/2013/05/27/TransformationPriorityAndSorting.html

Page 37: Transformation Priority Premise (TPP)

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ถามมา ตอบไป