In this article, we will concentrate about some interesting courses that we need to learn to improve our coding quality.

Let’s get started.


Table of contents


Courses about Clean code

  1. Java: Writing Readable and Maintainable Code by Andrejs Doronins

  2. Defensive Coding in Java by Andrejs Doronins

  3. Writing Testable Code by Matthew Renze

  4. Java Fundamentals: Object-oriented Design by Allen Holub

  5. Working with Nulls in Java by Esteban Herrera

    This course offers some ways to get rid of Null in Java.

    • Using annotations
    • Null Object Pattern
    • Optional
  6. Advanced Defensive Programming Techniques by Zoran Horvat

  7. Java Refactoring: Best Practices by Andrejs Doronins


Courses about Principles

  1. Encapsulation and SOLID by Mark Seemann

  2. SOLID Software Design Principles in Java by Dan Geabunea


Courses about Design patterns

  1. Implementing Design Patterns Using Java 8 Lambda by Jose Paumard

  2. Mastering Object-oriented Programming in Java by Zoran Horvat

    This course is very good to organize our classes in the project.

    We have the table of content of this course:

    • Staying Focused on Domain Logic with Streams

      It will talk about the problem of loop, understanding aggregation functions, generalizing selection of a single object, and generalizing the stream of objects.

    • Untangling Operations from Structure on Business Data

      It introduces about composite objects, and its limitations, design functions that support composition, make the composition algorithm explicit.

    • Advancing to a Domain - Specific Language

    • Increasing Flexibility by Removing Enums and Switch Statements

    • Turning Chained Branching into the Chain of Rule Objects

  3. Patterns for Building Distributed Systems for The Enterprise by Michael Perry

    This course will cover about some architecture patterns such as Domain Driven Design, CQRS, Service Bus.

  4. Java: Refactoring to Design Patterns

    • Better Object Creation with Factories

    • Eliminating Conditional Complexity

      This section will refactor conditional complexity by using Strategy pattern, and functional programming.

    • Improving Interfaces with Wrappers

      It talks about some structural patterns such as Adapter, Decorator, and Facade.

  5. Design Patterns Library

    Beside using GoF design patters, we can see some other patterns:

    • Event Aggregator
    • Lazy Load pattern
    • Service Locator pattern
    • Unit of Work
    • Rules pattern
    • Specification pattern
  6. Design Patterns in Java: Creational by Bryan Hansen

  7. Design Patterns in Java: Structural by Bryan Hansen

  8. Design Patterns in Java: Behavioral by Bryan Hansen

  9. Design Patterns in Java: The Big Picture by Esteban Herrera

  10. Building More Python Design Patterns by Gerald Britton

  11. Design Patterns with Python by Gerald Britton

  12. Design Patterns On-Ramp by Jeremy Clark

    This course will give us the real usage of patterns:

    • Observer pattern
    • Proxy pattern
    • Iterator pattern
    • Chain of Responsibility
    • Facade pattern
    • Factory Method pattern
    • Decorator pattern
    • Adapter pattern