SOLID Design Principles in C#

Leverage Smart Design in .Net Applications


Enroll on Udemy $13.99 USD


This course dives into the aspects of software engineering that produce both great and failed software.  We start off by looking at our goals for design, the common smells, process and the SOLID principles.  This course reinforces best practices using the experiences of the course author and instructor, Chuck McCullough.  As a practicing software engineer for over 30 years and having completed dozens of projects, he has the insights to cut through the theoretical and jump right to the important stuff!

Why choose this course?  Microsoft uses Chuck's courses to train their developers internally.  Chuck's courses have been delivered to thousands of developers in-person, online and via Udemy, including  major corporations, government agencies and military around the world.

There is no silver bullet or magic formula for great design.  Design is part art and part science and many design concepts are difficult to explain and grasp.  This course focuses on the issues of design in as simple and concise way possible.  Chuck also communicates that it is not necessary to implement all SOLID principles to have a great design.  In fact, many designs are overly complicated because the designers were unbending in SOLID principles - this is one of the many design smells that Chuck addresses in the course.

Using C# to demonstrate with lots of hands-on labs, this course teaches:

  • Design Goals - What are we trying to accomplish?

  • Design Smells - How to identify and objectively articulate bad design choices.

  • Test Driven Development and minimalistic design and implementation - Avoid overdesign and facilitate design changes.

  • Process - What are the best ways to proceed with software development and measure progress.

  • Single Responsibility Principle - Only one reason to change

  • Open/Close Principle - Open for business, closed for modification

  • Liskov's Substitution Principle - a subtype can do more and require less

  • Interface Segregation Principle - interfaces are for clients

  • Dependency Inversion Principle - don't call us, we'll call you!

This course is full of examples and hands-on opportunity along with 24/7 access to help and immediate feedback on labs.