Objects in a program should be replaceable with instances of their sub-types without altering the correctness of that program Robert C. Martin “At the beginning, keep things simple and concrete – stick to that as long as possible/necessary.” “Correct abstractions usually come after careful thinking and initial minimal, concrete implementation” “Incorrect abstractions usually come from […]
Knowledge Base
Core IT knowledge: basic principles, software design, technology essence
SOLID – Open/Closed
Def. Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification Robert C. Martin In object-oriented programming, the open/closed principle states that “software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification” Usually, the first impression that comes out about this principle is confusion: it […]
Pipeline Pattern in C#
WCF to gRPC – in .NET Core
JS – event loop
Psychology of code readability
https://medium.com/@egonelbre/psychology-of-code-readability-d23b1ff1258a – we remember 4+/-1 item in our short memory, then they fade away. – in our brain facts/knowledge pieces are grouped, chunked and CHUNKS are linked. – we process input with our focus/locus of attention (one thing at the same time in the same space) – focus/locus is called CONTEXT – MENTAL MODEL is […]
Design Patterns – how to use them?
Design pattern – how to use them? 1. Remember the pattern category (creational, behavioral, structural) 1. Create simple, single sentence pattern explanation 2. Associate simple use case with previous explanation Whoila! You have a design patterns toolbox!
Specification Pattern – Essentials
Specification pattern is DDD specific way for buildingblocks of business logic on top of domain entities.They are defined as predicates/filters for entities.They can be combined in more complex logic.You can benefit from implementation specificsas some technologies provide many enhancements. To correctly define specification pattern and find an applicable area for it, we should describe 4 […]
Contravariance
Covariance & Contravariance are one of the most confusing terms in C#, no surprise it’s very popular for geeky questions in job interviews. Any time someone mentions those terms, it takes quite a while to refresh my knowledge about it. So, I decided to write a couple of posts explaining them in the simplest and […]
SOLID Principles
SOLID is an acronym formed from the most basic, yet very important principles in OOP, defined by Robert C. Martin, back in 2000: 1. Single Responsibility 2. Open/Closed 3. Liskov Substitution 4. Interface Segregation 5. Dependency Inversion What I love about these principles are 2 things: Simple to understand and remember. They are compact, very concrete, with smallest […]