SlideShare a Scribd company logo
1 of 17
Download to read offline
Better Code,
               Littler Classes
• While you wait, install the sample code from the USB drive:
   Code/flatwiki-example/
    choose java, csharp, or ruby; we’ll be demonstrating in Java

• Import into your environment of choice:
   We’ve included configuration for
    Maven, Ant, IntelliJ, Eclipse, Visual Studio, and Rake

• Run your tests -- they should all pass!
   Java: “ant build”, “mvn test”, or IDE test runner
   Ruby: “rake test”
   C#: Run tests in Visual Studio

• If you don’t have a development environment,
    install VirtualBox and open BetterCodeVM.ova
Better Code,
Littler Classes
Who are we?
       Moss Collum
mcollum@cyrusinnovation.com
         @moss


       Laura Dean
lgdean@cyrusinnovation.com
        @lgdean
Format
Raise your hands
Why this workshop?
Environment Setup
Setup Instructions
• Sample code is on the USB drive
   Code/flatwiki-example/java, csharp, and ruby directories

• Import into your environment of choice
   We’ve included configuration for
   Maven, Ant, IntelliJ, Eclipse, Visual Studio, and Rake

• Run your tests -- they should all pass!
   Java: “ant build”, “mvn test”, IDE test runner
   Ruby: “rake test”
   C#: Run tests in Visual Studio

• If you don’t have a development environment,
  install VirtualBox and open BetterCodeVM.ova
Extract Delegate
Extract Method Object
Replace Value
With Value Object
Introduce
Parameter Object
Retrospective
Further Practice
• Code Katas

• Object Calisthenics

• Architectural Design Challenge

• Re-use our sample project!

• More at BetterCodeLittlerClasses.com
References
• Refactoring, by Martin Fowler

• Arguments and Results, by James Noble

• Working Effectively with Legacy Code, by Michael
  Feathers

• Growing Object Oriented Software, by Steve
  Freeman and Nat Pryce

• More at BetterCodeLittlerClasses.com
Feedback?
Where to find us
        Moss Collum
 mcollum@cyrusinnovation.com
          @moss


        Laura Dean
 lgdean@cyrusinnovation.com
         @lgdean

More Related Content

What's hot

What's hot (20)

Completely Test-Driven
Completely Test-DrivenCompletely Test-Driven
Completely Test-Driven
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
 
Configuration as Code in Bamboo
Configuration as Code in BambooConfiguration as Code in Bamboo
Configuration as Code in Bamboo
 
Dev ops for mobile apps at microsoft teams
Dev ops for mobile apps at microsoft teamsDev ops for mobile apps at microsoft teams
Dev ops for mobile apps at microsoft teams
 
Welcome to Azure DevOps
Welcome to Azure DevOpsWelcome to Azure DevOps
Welcome to Azure DevOps
 
Component testing with cypress
Component testing with cypressComponent testing with cypress
Component testing with cypress
 
Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011
 
Continuous Delivery in Java
Continuous Delivery in JavaContinuous Delivery in Java
Continuous Delivery in Java
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Future of Java
Future of JavaFuture of Java
Future of Java
 
Keep your projects up-to-date
Keep your projects up-to-dateKeep your projects up-to-date
Keep your projects up-to-date
 
Spinnaker Microsrvices
Spinnaker MicrosrvicesSpinnaker Microsrvices
Spinnaker Microsrvices
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
 
Sam Guckenheimer - Moving to One Engineering System
Sam Guckenheimer - Moving to One Engineering SystemSam Guckenheimer - Moving to One Engineering System
Sam Guckenheimer - Moving to One Engineering System
 
Webinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at KitchensurfingWebinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at Kitchensurfing
 
Hacking AMD MIOpen to run anywhere
Hacking AMD MIOpen to run anywhereHacking AMD MIOpen to run anywhere
Hacking AMD MIOpen to run anywhere
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Testing JSF with Arquillian and Selenium
Testing JSF with Arquillian and SeleniumTesting JSF with Arquillian and Selenium
Testing JSF with Arquillian and Selenium
 
Infrastructure as Code (BBWorld/DevCon13)
Infrastructure as Code (BBWorld/DevCon13)Infrastructure as Code (BBWorld/DevCon13)
Infrastructure as Code (BBWorld/DevCon13)
 
Aws, play! couch db scaling soa in the cloud
Aws, play! couch db  scaling soa in the cloudAws, play! couch db  scaling soa in the cloud
Aws, play! couch db scaling soa in the cloud
 

Viewers also liked

Ieee psaddington-agile2012-v2 0
Ieee psaddington-agile2012-v2 0Ieee psaddington-agile2012-v2 0
Ieee psaddington-agile2012-v2 0
drewz lin
 
Lake2 企业安全应急响应新思路
Lake2 企业安全应急响应新思路Lake2 企业安全应急响应新思路
Lake2 企业安全应急响应新思路
drewz lin
 
Is it worth it agile2012 0
Is it worth it agile2012 0Is it worth it agile2012 0
Is it worth it agile2012 0
drewz lin
 
Meet scrum抯 big brother, dynamic governance v3
Meet scrum抯 big brother, dynamic governance v3Meet scrum抯 big brother, dynamic governance v3
Meet scrum抯 big brother, dynamic governance v3
drewz lin
 
Asset 1 security-in-the-cloud
Asset 1 security-in-the-cloudAsset 1 security-in-the-cloud
Asset 1 security-in-the-cloud
drewz lin
 
Cloudsecurity
CloudsecurityCloudsecurity
Cloudsecurity
drewz lin
 
Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01
drewz lin
 
云安全的意义
云安全的意义云安全的意义
云安全的意义
drewz lin
 
Precor agile alliance presentation 1208
Precor agile alliance presentation   1208Precor agile alliance presentation   1208
Precor agile alliance presentation 1208
drewz lin
 
Making animpact
Making animpactMaking animpact
Making animpact
drewz lin
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
drewz lin
 
Overcoming traditional project release reporting with an agile approach focus...
Overcoming traditional project release reporting with an agile approach focus...Overcoming traditional project release reporting with an agile approach focus...
Overcoming traditional project release reporting with an agile approach focus...
drewz lin
 
移动互联网的未来
移动互联网的未来移动互联网的未来
移动互联网的未来
drewz lin
 
流量清洗产品概述和关键技术介绍
流量清洗产品概述和关键技术介绍流量清洗产品概述和关键技术介绍
流量清洗产品概述和关键技术介绍
drewz lin
 
How to brainstorm
How to brainstormHow to brainstorm
How to brainstorm
drewz lin
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台
drewz lin
 
Pinterest arch summit august 2012 - scaling pinterest
Pinterest arch summit   august 2012 - scaling pinterestPinterest arch summit   august 2012 - scaling pinterest
Pinterest arch summit august 2012 - scaling pinterest
drewz lin
 
4+1view architecture
4+1view architecture4+1view architecture
4+1view architecture
drewz lin
 

Viewers also liked (18)

Ieee psaddington-agile2012-v2 0
Ieee psaddington-agile2012-v2 0Ieee psaddington-agile2012-v2 0
Ieee psaddington-agile2012-v2 0
 
Lake2 企业安全应急响应新思路
Lake2 企业安全应急响应新思路Lake2 企业安全应急响应新思路
Lake2 企业安全应急响应新思路
 
Is it worth it agile2012 0
Is it worth it agile2012 0Is it worth it agile2012 0
Is it worth it agile2012 0
 
Meet scrum抯 big brother, dynamic governance v3
Meet scrum抯 big brother, dynamic governance v3Meet scrum抯 big brother, dynamic governance v3
Meet scrum抯 big brother, dynamic governance v3
 
Asset 1 security-in-the-cloud
Asset 1 security-in-the-cloudAsset 1 security-in-the-cloud
Asset 1 security-in-the-cloud
 
Cloudsecurity
CloudsecurityCloudsecurity
Cloudsecurity
 
Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01
 
云安全的意义
云安全的意义云安全的意义
云安全的意义
 
Precor agile alliance presentation 1208
Precor agile alliance presentation   1208Precor agile alliance presentation   1208
Precor agile alliance presentation 1208
 
Making animpact
Making animpactMaking animpact
Making animpact
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
Overcoming traditional project release reporting with an agile approach focus...
Overcoming traditional project release reporting with an agile approach focus...Overcoming traditional project release reporting with an agile approach focus...
Overcoming traditional project release reporting with an agile approach focus...
 
移动互联网的未来
移动互联网的未来移动互联网的未来
移动互联网的未来
 
流量清洗产品概述和关键技术介绍
流量清洗产品概述和关键技术介绍流量清洗产品概述和关键技术介绍
流量清洗产品概述和关键技术介绍
 
How to brainstorm
How to brainstormHow to brainstorm
How to brainstorm
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台
 
Pinterest arch summit august 2012 - scaling pinterest
Pinterest arch summit   august 2012 - scaling pinterestPinterest arch summit   august 2012 - scaling pinterest
Pinterest arch summit august 2012 - scaling pinterest
 
4+1view architecture
4+1view architecture4+1view architecture
4+1view architecture
 

Similar to Better code, littler classes

Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2
Will Iverson
 
Polyglot Plugin Programming
Polyglot Plugin ProgrammingPolyglot Plugin Programming
Polyglot Plugin Programming
Atlassian
 
End to End Testing with nightwatchjs
End to End  Testing with nightwatchjsEnd to End  Testing with nightwatchjs
End to End Testing with nightwatchjs
Srikanth Madduri
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Nilesh Panchal
 
Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
Hendrik Ebbers
 

Similar to Better code, littler classes (20)

Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2
 
Polyglot Plugin Programming
Polyglot Plugin ProgrammingPolyglot Plugin Programming
Polyglot Plugin Programming
 
Intro to Maven.ppt
Intro to Maven.pptIntro to Maven.ppt
Intro to Maven.ppt
 
basic core java up to operator
basic core java up to operatorbasic core java up to operator
basic core java up to operator
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
End to End Testing with nightwatchjs
End to End  Testing with nightwatchjsEnd to End  Testing with nightwatchjs
End to End Testing with nightwatchjs
 
Nightwatch JS for End to End Tests
Nightwatch JS for End to End TestsNightwatch JS for End to End Tests
Nightwatch JS for End to End Tests
 
Cassandra Development Nirvana
Cassandra Development Nirvana Cassandra Development Nirvana
Cassandra Development Nirvana
 
Development Nirvana with Cassandra
Development Nirvana with CassandraDevelopment Nirvana with Cassandra
Development Nirvana with Cassandra
 
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter DanesUsing Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
What Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentWhat Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java Development
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
 
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle
 
Everything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLEverything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPL
 
Everything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventureEverything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventure
 
Karmasphere Studio for Hadoop
Karmasphere Studio for HadoopKarmasphere Studio for Hadoop
Karmasphere Studio for Hadoop
 
Testing Storm components with Groovy and Spock
Testing Storm components with Groovy and SpockTesting Storm components with Groovy and Spock
Testing Storm components with Groovy and Spock
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
 
Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
 

More from drewz lin

Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-keary
drewz lin
 
Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013
drewz lin
 
Phu appsec13
Phu appsec13Phu appsec13
Phu appsec13
drewz lin
 
Owasp2013 johannesullrich
Owasp2013 johannesullrichOwasp2013 johannesullrich
Owasp2013 johannesullrich
drewz lin
 
Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2
drewz lin
 
I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2
drewz lin
 
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolfDefeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
drewz lin
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equal
drewz lin
 
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
drewz lin
 
Appsec usa roberthansen
Appsec usa roberthansenAppsec usa roberthansen
Appsec usa roberthansen
drewz lin
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaola
drewz lin
 
Appsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_editsAppsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_edits
drewz lin
 
Appsec2013 presentation
Appsec2013 presentationAppsec2013 presentation
Appsec2013 presentation
drewz lin
 
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitationsAppsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
drewz lin
 
Appsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martinAppsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martin
drewz lin
 
Amol scadaowasp
Amol scadaowaspAmol scadaowasp
Amol scadaowasp
drewz lin
 
Agile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usaAgile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usa
drewz lin
 
Vulnex app secusa2013
Vulnex app secusa2013Vulnex app secusa2013
Vulnex app secusa2013
drewz lin
 
基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架
drewz lin
 
新浪微博稳定性经验谈
新浪微博稳定性经验谈新浪微博稳定性经验谈
新浪微博稳定性经验谈
drewz lin
 

More from drewz lin (20)

Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-keary
 
Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013
 
Phu appsec13
Phu appsec13Phu appsec13
Phu appsec13
 
Owasp2013 johannesullrich
Owasp2013 johannesullrichOwasp2013 johannesullrich
Owasp2013 johannesullrich
 
Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2
 
I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2
 
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolfDefeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equal
 
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
 
Appsec usa roberthansen
Appsec usa roberthansenAppsec usa roberthansen
Appsec usa roberthansen
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaola
 
Appsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_editsAppsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_edits
 
Appsec2013 presentation
Appsec2013 presentationAppsec2013 presentation
Appsec2013 presentation
 
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitationsAppsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
 
Appsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martinAppsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martin
 
Amol scadaowasp
Amol scadaowaspAmol scadaowasp
Amol scadaowasp
 
Agile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usaAgile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usa
 
Vulnex app secusa2013
Vulnex app secusa2013Vulnex app secusa2013
Vulnex app secusa2013
 
基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架
 
新浪微博稳定性经验谈
新浪微博稳定性经验谈新浪微博稳定性经验谈
新浪微博稳定性经验谈
 

Better code, littler classes

  • 1. Better Code, Littler Classes • While you wait, install the sample code from the USB drive: Code/flatwiki-example/ choose java, csharp, or ruby; we’ll be demonstrating in Java • Import into your environment of choice: We’ve included configuration for Maven, Ant, IntelliJ, Eclipse, Visual Studio, and Rake • Run your tests -- they should all pass! Java: “ant build”, “mvn test”, or IDE test runner Ruby: “rake test” C#: Run tests in Visual Studio • If you don’t have a development environment, install VirtualBox and open BetterCodeVM.ova
  • 3. Who are we? Moss Collum mcollum@cyrusinnovation.com @moss Laura Dean lgdean@cyrusinnovation.com @lgdean
  • 8. Setup Instructions • Sample code is on the USB drive Code/flatwiki-example/java, csharp, and ruby directories • Import into your environment of choice We’ve included configuration for Maven, Ant, IntelliJ, Eclipse, Visual Studio, and Rake • Run your tests -- they should all pass! Java: “ant build”, “mvn test”, IDE test runner Ruby: “rake test” C#: Run tests in Visual Studio • If you don’t have a development environment, install VirtualBox and open BetterCodeVM.ova
  • 14. Further Practice • Code Katas • Object Calisthenics • Architectural Design Challenge • Re-use our sample project! • More at BetterCodeLittlerClasses.com
  • 15. References • Refactoring, by Martin Fowler • Arguments and Results, by James Noble • Working Effectively with Legacy Code, by Michael Feathers • Growing Object Oriented Software, by Steve Freeman and Nat Pryce • More at BetterCodeLittlerClasses.com
  • 17. Where to find us Moss Collum mcollum@cyrusinnovation.com @moss Laura Dean lgdean@cyrusinnovation.com @lgdean