Refactoring to Design Patterns by Example

Improving internal design of an existing application with refactoring techniques and design patterns in C#

4.43 (846 reviews)
Udemy
platform
English
language
Other
category
instructor
5,642
students
4.5 hours
content
May 2019
last update
$64.99
regular price

What you will learn

How to apply design patterns while refactoring an existing application

How to contain complexity of the business domain while performing small refactoring and redesign steps

Description

This course begins with examination of a realistic application, which is poorly factored and doesn't incorporate design patterns. The demo application converts text into subtitles for videos, which makes it quite useful in practice. Yet, it is nearly impossible to maintain and develop this application further, due to its poor structure and design.

That is the point at which the course begins. As demonstration after demonstration will unfold, we will refactor this entire application, one function and one class at a time. During refactoring, many design patterns will fit into place almost without effort. By the end of the course, you will know how code refactoring and design patterns - one coding practice and one design practice - can operate together and help each other create great design.

Content

Recognizing the Need for Refactoring and Design Patterns

Introducing the Problem Domain
How Did the Application Become This Bad?
Identifying Current Factoring of an Application
Identifying Refactoring Targets
Summary

Deciding Names and Locations for Types

Understanding Importance of Proper Naming
Defining the Project Structure
Implementing the Project Structure
The Case in Favor of Using Refactoring Tools
Naming Classes After Concepts They Model
Naming Classes After Behavior They Offer
Summary

Decoupling Implementation with Strategies

Identifying the Need to Decouple Function Calls
Refactoring Tightly Coupled Calls to the Strategy Pattern
Implementing Stateful Strategies
Null Object Pattern as a Strategy
Summary

Chaining Implementation with Composite and Decorator

Identifying the Need to Group Equally-typed Strategies
Understanding the Composite Pattern
Chaining Strategies with Composite Pattern
Understanding the Drawbacks of Composite
Understanding the Decorator Pattern
Wrapping Strategies with the Decorator Pattern
Summary

Constructing Complex Object Graphs with Builder

Identifying the Need for a Builder
Preparing Ground for the Builder
Designing the Builder
A Word about Structuring Namespaces
Summary

Modeling Low-level Concerns as Infrastructure

Identifying Infrastructural Concerns
Introducing the Infrastructure Layer
Isolating Infrastructural Code
Moving Infrastructural Code to Another Layer
Summary

Factoring Domain Complexity Out with the Rules Pattern

Identifying the Domain Rules
Preparing Room for Explicit Rules
Implementing the Rules
Constructing Composite Rules
Wrapping Rules into a Rule Adapter
Summary

Supporting Multiple Transforms with the Visitor Pattern

Identifying the Need for Unrelated Behaviors
Introducing the Visitor Design Pattern
Building Structural Inspection on the Visitor Idea
Implementing the Structural Inspection Visitor
Implementing the Concrete Visitor
Summary

Wrapping It All Together

Extending the Rules System
Pushing the Rules System to Its Extreme
Adding Features to the Domain
Summary
Course Summary

Screenshots

Refactoring to Design Patterns by Example - Screenshot_01Refactoring to Design Patterns by Example - Screenshot_02Refactoring to Design Patterns by Example - Screenshot_03Refactoring to Design Patterns by Example - Screenshot_04

Reviews

Anthony
November 14, 2023
I loved it. It was a good refresher for me. I know what I am doing and what more I can do or think differently.
La
October 26, 2023
The entire course give me more than I could possibly imagine to get from only one. A lot of insights for design patterns and their applicability. A lot of hints how to design classes properly. A lot of hints how to perform refactorings in baby steps. A lot of hints hot to think of possible future extensions, changed requirements, etc. If one is looking for a single course that will provide him the above (and much more) - You can stop. You have finally found it :-)
Ioannis
October 18, 2023
The course is brilliant and it really deserves that pure 5 stars! It can be considered as advanced course, but it does great job on explaining why you implement such and such design pattern and what to be aware of.
Kaustav
October 8, 2023
The instructor goes through application and use cases of design patterns. The only way to learn these patterns is to recognize use cases and that has been beautifully demonstrated in this course.
Ivo
June 7, 2023
I appreciate that the author speaks about and let me take a look at the decesion making process to choose the right design pattern. It's very practical and helped me to recognize some possibilities to apply redesigning to patterns in my own project.
Christian
February 18, 2023
If you're a programmer looking to take your skills to the next level, you absolutely must check out this course. The impact it will have on your code quality is truly game-changing. This course is a must-have.
Diego
November 8, 2022
Zoran Horvat has a great presentation style, and a true passion for design. I found the material illuminating and motivational. There is a particular moment in Section 3 where Zoran demonstrated how much clearer a method is after several passes at refactoring it. Once the noise was dealt with, the true nature of the method was revealed.
Sergii
October 8, 2022
Good course with reasoning why o use most useful design pattens for refactoring and redesign, was hard to understand second iteration on rules pattern without knowing C# as have Java and Golang background
Valentas
July 11, 2022
Really enjoyed the tutorial. The way of explaining design patterns on pure code has given me better understanding why code must follow design patterns.
Oliver
June 22, 2022
This is not hacking. This is about fundamentals, told by someone who sounds relaxed and confident about applying clean code best practices to real world projects. There are no quick and simple 'one size fits all' solutions presented here, but a way of thinking and approaching the unavoidable real world challenges of software engineering.
System
February 21, 2022
Watching patterns and structures applied to the original poor code gave me deeper understandings on how code should be refactored. Additionally, the explanation of each patterns and DDD/MVP was easy to understand, thanks to the diagrams and examples. Since my current project is written in a poor code, I am willing to use what I learned in real business.
Vishal
December 16, 2021
The best thing about this course is its real-world full working example to start with. I am really pleased that he did not use Animal, Pizza, Shape, Unknown or difficult to understand domain problem but he used a real-world problem that is easy to understand. At each step, he explained what the issue is, why we want to find a solution, what could be the best solution. This example really helped understand how to apply various patterns for any given domain and not just Animal, Shape or Pizza classes.
Pavel
November 19, 2021
This course will make you feel, that refactoring is very interesting process if you know the rules. And it is absolutely correct.
Jose
August 6, 2021
This is the course that I was looking for!. A hands on approach to application development. The course is abundant in code refactoring and theory explaining the reasons behind every decision. Very well crafted course!
Peter
April 20, 2021
The topics in this course are presented in a concise and well-structured manner. It's obvious the instructor not only knows what he is talking about, but also enjoys it. The only addition I'd like to see is some kind of second, separate example project to apply what we've learned. But then again, as a software developer, it's reasonable to expect your codebase to be messy enough for that. ;)

Charts

Price

Refactoring to Design Patterns by Example - Price chart

Rating

Refactoring to Design Patterns by Example - Ratings chart

Enrollment distribution

Refactoring to Design Patterns by Example - Distribution chart
2093784
udemy ID
12/18/2018
course created date
5/18/2020
course indexed date
Bot
course submited by