3 DAY COURSE

Uncle Bob's Clean Code: Agile Software Craftsmanship

Topics covered at CLEAN-CODE-01-03
View Schedule & Book More dates available

Next up: Monday, 7th - Wednesday, 9th December at The Skills Matter eXchange, London

Uncle Bob (Robert C. Martin) will be delivering this session. Starts at 9:00 AM.

In this three-day Clean Code Workshop you will learn the principles and practices of Clean Code as described in Robert C. Martin's book: Clean Code: A Handbook of Agile Software Craftsmanship. You will also receive this book as part of the course materials.

Even bad code can function. But if code isn't clean, it can bring a development organisation to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way?

This Clean Code course alternates between lecture and exercise so that you can experience, first-hand, the practices and disciplines of these fundamental topics.

Topics Professionalism, Craftsmanship, and Clean Code. Choosing Meaningful Names Writing Clean Functions The Proper Use of Comments Coding Style and Formatting Object Oriented Programming vs. Procedural Programming. Error Handling Boundaries between Subsystems Unit testing, and Test Driven Development Writing Clean Classes Systems Plan vs. Emergence Concurrency Smells and Heuristics.

Looking for Uncle Bob's 2-day version of this course (with different dates and locations?) - click here for details!

Learn how to:

  • Develop an attitude of professional craftsmanship.
  • Tell the difference between good and bad code.
  • Create and write good code and transform bad code into good code.
  • Create good names, good functions, good objects, and good classes.
  • Format code for maximum readability.
  • Implement complete error handling without obscuring code logic.
  • Apply effective unit testing and refactoring techniques.

What the community says

"Excellent course presented by one of the best voices on the circuit. "

Mark Webb on 12th Dec 2014

"The guy is a legend, and now I know why."

Robert Armour on 12th Dec 2014

"Very engaging tutor. Without a doubt the best course I've been on for some time."

Paul Mccann on 12th Dec 2014

About the Author

Uncle Bob (Robert C. Martin)

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 Development: Principles, Patterns, and Practices, and UML for Java Programmers.

Thanks to our partners

DAY ONE

Clean Code

  • There Will Be Code
  • Bad Code
  • The Total Cost of Owning a Mess
  • The Grand Redesign in the Sky
  • What is Clean Code?
  • A review of expert opinions.
  • Schools of Thought
  • The Boy Scout Rule

Meaningful Names

  • Use Intention Revealing Names <
  • Avoid Disinformation
  • Make Meaningful Distinctions
  • Use Pronounceable Names
  • Use Searchable Names
  • Avoid Encodings
  • Avoid Mental Mapping
  • Class Names
  • Method Names
  • Don't be Cute
  • One Word per Concept
  • No Puns
  • Solution Domain Names
  • Problem Domain Names

Functions

  • Small!
  • Do One Thing.
  • One Level of Abstraction
  • Switch Statements
  • Function Names (again).
  • Arguments and Parameters
  • Side Effects
  • Command Query Separation
  • Exceptions
  • DRY - Don't Repeat Yourself.
  • Structured Programming
Comments
  • Why and When to Write Comments
  • Explain Yourself in Code
  • Good Comments
  • Bad Comments

Formatting

  • The Purpose of Formatting
  • Vertical Formatting
  • The Newspaper Metaphor
  • Horizontal Formatting

Summary

DAY TWO

Objects and Data Structures

  • Data Abstraction
  • Data/Object Anti-symmetry
  • The Law of Demeter
  • Data Transfer Objects

Error Handling

  • Use Exceptions not Return Codes
  • Write your try/catch Statements First
  • Use Unchecked Exceptions
  • Provide Context with Exceptions
  • Define Exception Classes for Callers
  • Define Normal Flow
  • Don't Return Null
  • Don't Pass Null

Boundaries

  • Using Third Party Code
  • Exploring and Learning Boundaries
  • Learning Log4J
  • Learning Tests are Better than Free
  • Using Code that Does Not Yet Exist
  • Clean Boundaries

Unit Tests

  • The Three Laws of TDD
  • Keeping Tests Clean
  • Domain Specific Testing Language
  • One Assert
  • F.I.R.S.T.

Classes

  • Class Organization
  • Small Classes
  • The Single Responsibility Principles (SRP)
  • Maintaining Cohesion
  • Organizing for Change

DAY THREE

Systems

  • How would you build a city?
  • Separation of Construction and Use
  • Dependency Injection
  • Scaling Up
  • Cross Cutting Concerns
  • Test Drive the System Architecture
  • Optimize Decision Making
  • Use Standards Wisely
  • System DSLs

Emergence

  • Getting Clean via Emergent Design
  • Simple Design Rules
  • DRY (again)
  • Expressiveness
  • Minimal Classes and Methods

Concurrency

  • Why Concurrency?
  • Concurrency Defense Principles
  • Know your Library
  • Execution Models
  • Producer-Consumer
  • Readers-Writers
  • Dining Philosophers
  • Beware Dependencies between Synchronized Methods
  • Keep Synchronized Sections Small
  • Writing Correct Shut-down Code is Hard
  • Testing Threaded Code

Smells and Heuristics

  • Dozens and dozens of them.

Conclusion

Audience

If you are a Java/C#/C++ developer and want to improve your ability to contribute to their company and their team by writing better code, this Clean Code course is for you!

Prerequisites

To benefit from this Clean Code course, you will need to know Java, C# or C++ prior to attending.

Bring your own hardware

Delegates are requested to bring their own laptop to this course as Skills Matter does not provide this. If you are unable to bring a laptop for the course, please contact us on +44 207 183 9040 or email us.

All delegates will need to have their own laptop with the following:

  • Preferred IDE
  • 2GB ram
  • Browser