Course Code: ccodebesp
Duration: 21 hours
Prerequisites:

There are no specific requirements needed to attend this course.

Overview:

Why do we need Clean Code?

Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code.

Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.

Course Outline:
  • Introduction

  • What does it mean to be clean?
  • Good and standardized naming
    • Tim Ottinger's naming rules
    • names of packages, files, classes, voids and functions as well as variables need to have meaningful names derived from their purpose
    • should be readable
    • should be searchable
    • consider the namespace we're generating; does it make sense?
  • Classes, objects and data structures
    • there's a difference between objects that do something and structures that simply contain data
    • when to use data structures, and why
    • when to use objects, and why
    • OOD and abastraction
    • getters/setters and why
    • better to have many small classes, with many small voids and functions
    • Design by contract
    • Separation of concerns
    • The SOLID principles
  • Good comments
    • there are good and bad comments;
    • we need to know how to generate good comments and forget about the rest
    • Documentation vs Comments
  • Bade Code Dumpster Dive - Part 1
  • Some small practice sessions
  • Functions
    • one thing only
    • small
    • arguments (good and bad)
    • unintended side effects
  • Acronyms to live by
    • DRY/OAOO
    • YAGNI
    • KIS
  • Error handling
    • when to handle errors, when to let them bubble up
    • if we handle an exception, what do we do with it and why
    • custom error handling classes
    • Defensive Programming
  • Code Style Guides and Code Formatting: how can we improve code readability
  • Bade Code Dumpster Dive - Part 2
  • Test-Driven Design: Open discussion of Uncle Bob's idea that programs should be TDD
  • Resume: What is Clean Code
  • Demonstration: Cleaning Code
  • Some small practice sessions