Master Solid Principles For Software Design & Architecture
Published 10/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 920.22 MB | Duration: 2h 42m
Published 10/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 920.22 MB | Duration: 2h 42m
Guide to mastering SOLID principles for software design & architecture to write maintainable, scalable, and robust code
What you'll learn
You'll learn why, when, and how you should apply the SOLID principles to write higher quality code
In addition to knowing when to apply the SOLID principles, you'll also learn when and how to violate them, so you could create better overall code design
Understand the basic foundation of software architecture
Write better code without having to memorize design patterns
Learn how to identify poorly written code and robust quality code
Learn core ideas that describe code quality, like coupling and cohesion
Take your code quality to the next level and become a better software engineer
Learn why the SOLID principles matter and how to apply them to real-world problems
Requirements
Basics of object-oriented programming, knowing what classes, inheritance, and interfaces are
Description
In this course you will learn why SOLID principles are important and how to apply them to write maintainable, scalable, and robust code.SOLID is an acronym for 5 software design principles that were refined over a long period of time by multiple software engineers to address the core recurring problems in software development.Take your code quality to the next levelCode quality is important to have, and improving code quality is something that all software engineers should strive for. Luckily, writing quality code is a learnable skill, but it's sometimes hard to know where to start or what to learn next. Do you know any programming language, but don't know what to do next? Maybe you are more experienced and are looking to add more to your arsenal or refresh your knowledge? If so, then learning the SOLID principles is a very good next step for you. It doesn't matter if you're a beginner or have a background in software, the SOLID principles will make you a better software developer and will make you stand out from the crowd.Build a SOLID foundation for software design and architectureThe goal of this course is to help you understand the core ideas behind software design and architecture that are used by experienced software engineers and architects. All without requiring you to memorize a bunch of object-oriented programming (OOP) design patterns. Patterns only help you in specific situations, but when you encounter a new situation, memorized patterns cannot help you if you don't understand how they work. That's why in this course we'll be focusing on ideas behind the principles, what and why they are trying to achieve, and, most importantly, how they are trying to achieve it. After taking this course you'll level up your programming skills and will be able to deal with code design problems that are new to you.Acquire long-lasting skillsIn this course I'll present you code examples in Java programming language. However, my goal is not to teach you Java or any other technology, my goal is to teach you the thought process behind writing better code and applying the SOLID principles.At the end of this course you'll have skills that won't go out of fashion with the next popular technology change. SOLID principles have passed the test of time and are here to stay.Course overviewTogether, in this course we will explore real-world problems that software developers run into on a daily basis instead of studying textbook examples that barely represent reality. You'll find a mix of relevant theory, practical coding exercises that will be done on-screen, and quizzes for you to take on your own. The quizzes are designed to convey the most important things, and you'll even be able to use them as a cheat sheet later.On top of all this, the course has as little technical jargon as possible and I try to explain things in everyday language.The course is divided into 5 sections, one for each of the principles:Single Responsibility PrincipleOpen-Closed PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion PrincipleIn each section we cover the required theory, and after that you are presented with a quiz that helps you better remember the theory before proceeding to a practical code example. After practical code examples we have a few more lectures to fill in any remaining gaps or explore things by looking at the bigger picture, we also explore when it would make sense to intentionally go against the SOLID principles for a better overall code design. The last part of each section is another quiz to further solidify your newly acquired knowledge.By the end of this course you will be able to identify common problems in code, and you'll know how to correct them.So, with all being said, if you're looking to improve your skills and write better code, look no further, because this course is for you.
Overview
Section 1: Introduction
Lecture 1 Introduction
Lecture 2 Why you should learn the SOLID principles
Section 2: Single Responsibility Principle
Lecture 3 Introduction to the Single Responsibility Principle
Lecture 4 Defining software entities and code modules
Lecture 5 What counts as a responsibility
Lecture 6 Goals of the Single Responsibility Principle and why it matters
Lecture 7 Coding exercise. Identifying responsibilities in the code example
Lecture 8 Coding exercise. Fixing the code to follow the Single Responsibility Principle
Lecture 9 When and how can we violate the Single Responsibility Principle
Lecture 10 How the scale of our code affects the Single Responsibility Principle
Section 3: Open-Closed Principle
Lecture 11 Introduction to the Open-Closed Principle
Lecture 12 Two approaches to the Open-Closed Principle
Lecture 13 What the Open-Closed Principle is NOT about
Lecture 14 Dependency Injection
Lecture 15 Coding exercise. Identifying things in code that cannot be extended
Lecture 16 Coding exercise. Fixing the code to be extendable
Lecture 17 What to do if dependency injection is not available. Declarative programming
Section 4: Liskov Substitution Principle
Lecture 18 Introduction to the Liskov Substitution Principle
Lecture 19 What the Liskov Substitution Principle applies to
Lecture 20 Program behavior and what it means to not alter it
Lecture 21 Code examples
Lecture 22 When and how can we violate the Liskov Substitution Principle
Lecture 23 How the Liskov Substitution Principle relates to abstractions
Section 5: Interface Segregation Principle
Lecture 24 Introduction to the Interface Segregation Principle
Lecture 25 Coupling. What it means to depend on code
Lecture 26 What is a public interface
Lecture 27 Comparing Single Responsibility and Interface Segregation Principles
Lecture 28 Code example
Lecture 29 Why the Interface Segregation Principle is important
Section 6: Dependency Inversion Principle
Lecture 30 Introduction to the Dependency Inversion Principle
Lecture 31 What the Dependency Inversion Principle is about
Lecture 32 What dependency inversion means
Lecture 33 Coding exercise. Identifying dependencies in the code example
Lecture 34 Coding exercise. Rewriting the code to follow the Dependency Inversion Principle
Lecture 35 Is it possible to make all of our code modules independent
Lecture 36 What modules are best to depend on
Lecture 37 Dangers of over-applying the Dependency Inversion Principle
Lecture 38 How the scale of our code affects the Dependency Inversion Principle
Section 7: Outro
Lecture 39 Final lecture
People who care about the quality of their code and want to improve it,Everyone who wants to start learning about software architecture,Beginners who want to take their skills to the next level, but don't know where to start,More experienced developers who want to strengthen their abilities