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!

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.

This Clean Code workshop alternates between lectures and exercises so that you can experience, first-hand, the practices and disciplines of the following fundamental topics:

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 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 Defence 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 your team and company 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 required to bring their own laptop to this course as Skills Matter does not provide this.

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!

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.

This Clean Code workshop alternates between lectures and exercises so that you can experience, first-hand, the practices and disciplines of the following fundamental topics:

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