High-level software development topics like domain driven design, design patterns, and antipatterns.
Level up your programming with game programming patterns By Unity
A Module should be responsible for one thing and has one reason to change.
A module should be open for extention but closed for modification. We can solve this problem by using interfaces.
An Object(Such as class) may be replaced by a sub-object(such as a class that extends the first class) without breaking the program. Derived classes should extend without replacing the functionality of old classes.
Classes should not be forced to depend on methods they do not use.
High level parts of the system should not depend on low level parts of the system directly, instead they should depend on some kind of abstraction(interfaces)
So what is Dependency Injection? DI is a subtype of IoC (We will talk about it later) and is implemented by constructor injection, setter injection, or method injection. It’s a more specific implementation that focuses on the way objects obtain their dependencies. DI talks about how one object acquires dependency on another object through abstraction. DIP is a principle of the SOLID principles in Object-Oriented Programming. It’s about decoupling dependencies between high-level and low-level layers through shared abstractions. Dependency Injection is a form of Inversion of Control, but it doesn’t necessarily achieve much decoupling. Dependency Inversion is what achieves the decoupling, and is facilitated by using Dependency Injection with an Inversion of Control Container.
SOLID Unity3D by Jason Weimann
Unite Austin 2017 - S.O.L.I.D. by Unity
Practical Game Development by Infallible Code
S.O.L.I.D Design Patterns by Dapper Dino
Design pattern list:
Creational Design Patterns: 1-Deal with creation(construction) of objects 2-Explicit (constructor) VS Implicit (DI, Reflection, etc) | Example: Builder, Factory Method and Abstract Factory), Prototype and Singleton
Structrural Design Patterns: 1- Concerned with structure (e.g, Class Members) 2- Many patterns are wrappers that mimic the underlying class interface. 3- Stress the importance of good API design | Example: Adapter, Bridge, Composite, Decorator, Façade, Flyweight and Proxy
Behavioral Design Patterns: 1- They are all different: No central theme | Example: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template Method, Visitor, Blackboard
Game Related Design Patterns: Pattern that we usually use in game programming | Example: Object Pooling and Pub/Sub
Related Udemy Course: https://www.udemy.com/course/design-patterns-csharp-dotnet/
C# Design patterns by dofactory: https://www.dofactory.com/net/design-patterns
Game Programming Patterns by Infallible Code
Game Programming Patterns Tutorials by Unity
Game Programming Patterns by Jason Weimann
Architectural pattern list: service locator, layered, hexagonal, MVC, MVVM
Related Udemy Course: Learn Parallel Programming with C# and .NET
Clean Code - Uncle Bob - all lessons
Test-Driven Development (TDD) in Unity by Infallible Code
It’s a programming principle that inverts the flow of control in an application. Instead of the programmer controlling the flow of a program, the external sources (framework, services, other components) take control of it. In the context of service containers, IoC is achieved by allowing the framework to do the binding and instantiation of dependencies.
Live Tutorials & Coding Sessions by Infallible Code