HOME SCALA & F# JAVA .NET WEB GROOVY & GRAILS ANDROID & IOS NOSQL ARCHITECTURE AGILE & SCRUM AGILE DEVELOPER  
Uncle Bob's Test Driven Development and Refactoring (TDD-REFACTORING-01-02)
CODE: TDD-REFACTORING-01-02          DURATION: 2 DAY/S
This is a two-day Test-Driven Development (TDD) and Refactoring workshop in which you will learn the principles and practices as described in Robert C. Martin's book: Clean Code: A Handbook of Agile Software Craftsmanship.

This course alternates between lecture and exercise so that you can experience, first-hand, the practices and disciplines of these fundamental topics.
  • Professionalism, Craftsmanship and Clean Code
  • Code Smells
  • De-odorizing code by using refactorings
  • Unit testing and Test Driven Development
  • Design Patterns that facilitate testing and refactoring

LEARN HOW TO:
  • Understand how to improve code without risking breakage
  • The ability to create automated test suites that run quickly
  • How to keep the code running at all times
  • How to use XUnit (JUnit, NUnit, CppUTest)
  • Facility with Test Doubles such a Mocks, Fakes, and Stubs
  • Identification and remediation of code smells
  • A disciplined and practical approach to software development
PROGRAMME
DAY 1 - Introduction
  • Craftsmanship – What this course is really about
  • Attitude
  • Keeping Code Clean
  • The Iterative Development Cycle
  • The Safety Net of Automated Tests
  • Design Evolution
  • Code Rot
  • The Two Values of Software
  • Form and Function
Refactoring
  • The Purpose of Refactoring
  • The Rules of Simple Design
  • Taking Small Steps
  • When should you Refactor?
  • What skills are needed?
  • Code Smells
  • The Single Responsibility Principle
  • Names
  • Method Names
  • Class and Interface Names
  • Name related Refactorings
Exercise: Video Store
  • What to look for when refactoring
  • Video Store Demo
  • Long Method
  • Extract Method
  • Temporary Variables
  • Replace Temp with Query
  • Introduce Parameter Object
  • Replace Method with Method Object
  • Split Temporary Variable
  • Separate Query from Modifier
  • Split Loop
  • Feature Envy
  • Move Method
  • Conditional Logic
  • Replace Conditional with Polymorphism
  • Duplicated Code
  • Form Template Method
  • Extract Super Class
  • Pull Up Method
  • Extract Class
  • Encapsulate Collection
Summary
  • The Rubicks Cube Analogy
  • When NOT to refactor
  • Test Coverings
  • Performance
DAY 2 - Test Driven Development
  • The Three Laws of TDD
  • The Litany of Benefits
  • Debug Time
  • Change with Immunity
  • Documentation by example
  • Isolation of modules
  • Craftsmanship and Professionalism
  • Test Coverage
  • Instructor Demo
  • What does this really look like?
  • Sneaking up on a simpler solution
  • Introduction to xUnit
  • The Development Cycle
  • Focus on the interface
  • Exercise
Test Doubles
  • Testing a System of Objects
  • Mock Objects
  • Fakes
  • Stubs
  • The Self-Shunt pattern
  • Exercise
  • Mock Object Tools
  • JMock
  • EasyMock
  • Mockito
Testing GUIs
  • The Humble Dialog
  • Model-View-Presenter
  • Thin GUIs
  • Web GUIs
Acceptance Testing Overview
  • FitNesse and Other Tools
Summary
  • It’s really about design
  • Productivity and Predictability
  • The demise of debugging
  • TDD in your group
  • The Role of QA in an Agile Environment
  • The Definition of Done
  • Seperate Core System Logic from Execution Environment
  • Iterative Specification
FitNesse: An OpenSource tool for Test Automation
  • Wiki
  • Tests
  • Fixtures provide link between tests and SUT
  • Action fixture
  • Column fixture
  • Row fixtures
  • Do fixture
  • Table fixture
  • Exercise
  • Specify a system using tests
  • Execute those tests
  • Using FitNesse in your organisation
  • Configurations
Conclusion
  • Review of main topics
  • Q&A Informal Discussion
  • Close
NEXT SESSION
The next course will be delivered at The Skills Matter eXchange - London, on 12 Sep 2013 by Uncle Bob (Robert C. Martin). Uncle Bob is also the author of this course.
COURSE DATES & REGISTRATION
Date City Cost (ex vat) Offer
12-09-13 London £1495.00 £1345.00 if booked before 14-07-13 Book Online Now
21-11-13 London £1495.00 £1345.00 if booked before 22-09-13 Book Online Now
Book Online or Call Sales on +44 (0)207 1839040
ABOUT THE AUTHOR
Robert Martin (@unclebobmartin) has been a programmer since 1970. He is the Master Craftsman at 8th Light inc, an acclaimed speaker at conferences worldwide, and the author of many books including: The Clean Coder, Clean Code, Agile Software Developm
More about Uncle Bob (Robert C. Martin)
IN PARTNERSHIP WITH CLEAN CODERS
IS THIS COURSE FOR YOU?
This course is for Java, .NET, or C++ developers who want to learn, or sharpen, the skills of TDD and Refactoring

COURSE PREREQUISITES
All delegates will need to have their own laptop with the following:
- Preferred IDE
- 2GB ram
- Browser

Please contact Ivana at Skills Matter should you need help with this.
To benefit from this Clean Code course, you will also need to know Java, C# or C++ prior to attending.

COURSE LABS & EXERCISES
This is an exercise driven course. Each topic is driven home through the use of hands-on exercises in which you must work together to write new code, or alter existing code to resolve, enhance and improve the quality of the code. Students will refactor existing code in order to improve it. They will use XUnit to write unit tests. They will write Mock Objects in order to isolate modules and facilitate testing.

COURSE DATES & REGISTRATION
Date City Cost (ex vat) Offer
12-09-13 London £1495.00 £1345.00 if booked before 14-07-13 Book Online Now
21-11-13 London £1495.00 £1345.00 if booked before 22-09-13 Book Online Now
Book Online or Call Sales on +44 (0)207 1839040
© Copyright 2003-2013, Skills Matter Ltd
About Us  Jobs  Find Us  Meeting & Training Rooms  Newsletter  Jobs: Sales Executive  Jobs: Student SkillsCaster  jobs - junior event coordinator  Open Source Journal  Jobs: Sponsorship Development  jobs: Marketing & Sales Graduate Internship  Jobs: HR Manager  jobs-Join Our Dev Team  DevOps Engineer  Front-End Engineer  Test Engineer