software architecture meta and solid principles in c# Course | simpliv

software architecture meta and solid principles in c# Course | simpliv

Get to understand the essentials of SRP, OCP, LSP, ISP and DIP, which combine to be called by the acronym SOLID. Learn how to apply meta and SOLID principles to make your application robust. Learn how to write code of the high quality: readable, understandable and reliable.

Teaching Approach

No fluff, no ranting, no beating the air. I esteem your time. The course material is succinct, yet comprehensive. All important concepts are covered. Particularly important topics are covered in-depth. For absolute beginners, I offer my help on Skype absolutely free, if requested.

Take this course, and you will be satisfied!

SOLID is an acronym which stands for SRP, OCP, LSP, ISP and DIP. These five acronyms in their turn stand for:

Single Responsibility Principle
Open/Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
In this course, you’ll learn how to apply meta and SOLID principles so that your application will live a long healthy life. It means you are going to learn how to write code of the high quality: readable, understandable and reliable.

Improve your knowledge in object-oriented programming

Understand the meta principles on which all the other development principles are based
Understand the symptoms of code defects
Learn the foundations of SOLID principles
Learn how to detect the violations of SOLID principles and how to fix the problems
Learn how meta principles and SOLID principles are related to each other and how to find the balance between them
Foundations of writing object-oriented code

Despite the fact that C# is a very rich on features language, it's very common to see poorly designed and implemented applications in a real world. Language by itself does not guarantee that the architecture of an application will be great. In order to design and build maintainable software, we need to understand the principles of software development. This video course is exactly about how to achieve clean and maintainable software.

You probably have already heard the following well-known statement: most code sucks. Well, this course is all about how to produce code which doesn't suck.

Owning skills of producing a well-designed and well-implemented types is the prerequisite for the other developers to treat you as a decent professional.

Content and Overview

This course is aimed at middle and senior developers. Solid experience in C# is required.

There are plenty of code examples throughout this course so that you will learn both theoretical and practical material.

Starting with SOLID principles we will go further to the meta-principles. Going through the SOLID principles, you’ll also learn about the related patterns. Then we will get to the problem of contradictions between different principles. You’ll learn about the relationships between SOLID principles and meta principles.

In general, you’ll learn in this course:

These are the SOLID principles. You’ll learn the background problems that can be solved by particular principle, you’ll see the demonstrations in code, you’ll learn the related patterns to every principle.

Learning DIP you’ll in addition learn what is Dependency Injection, Inversion of Control, IoC-Containersand what are the architectural implications of DI.

Here are other topics you’ll learn in the course:

DRY - don’t repeat yourself
KISS - keep it simple stupid
YAGNI - You Ain’t Gonna Need It
SoC - separation of concerns
CQS - command query separation
Law of Demeter
Principle of Least Astonishment
Information Hiding and Encapsulation
API Development Principles
Contradiction between SOLID and YAGNI
Contradiction between OCP and YAGNI
What is Architecture and Design
How long is this course: The course is around 4.5 hours. All are video lectures. You will be able to download all the slides and code samples used in the course.

Keywords related to the course:

Software Architecture
Software Design
SOLID Principles
Who is the target audience?

Juniors with a solid C# background
Middle developers who want learn or enhance their knowledge about SOLID principles and Architecture
Seniors who want to have a good reminder of what they already know
Basic knowledge
Solid C# Background
At least half of a year of experience in a real-world project
What will you learn
Determine if a class has too many responsibilities
Apply SRP to make classes more granular
Determine the smell of duplication caused by OCP violation
Apply OCP to remove or prevent duplications
Make client's lives more enjoyable by applying ISP, making interfaces more granular
Determine LSP violations which break client's code
Apply LSP to come up with proper inheritance
Apply DIP to develop plugin architecture
Build your own simple IoC-Container
Build clean API in C#
I'm tired to list all the stuff you'll be able to do after this course )))
To continue:

Learn SOLID principles with C# | Simpliv

Learn SOLID principles with C# | Simpliv

Learn SOLID principles with C#

Are you afraid of complex terms which you face in interviews?

Did you always get confused which understanding some design patterns ?

Do you want to learn all this complex topics with ease?

If your answer is yes then this course is only for you. This course is specially designed for those who started working in C# programming language but lacking some important concepts of C# programming language and wants to become master of that.

Also if you have following questions which disturbs you a lot like

What is Design Patterns ?
How can i answer design patterns questions in interview ?
How Many design patterns are there and where can i use it ?
How can i compare one design pattern with other so that i can use it in my project requirement ?
Then this Course is answer of these questions plus lot more.

In my career i have given number of interviews and also conducted many interviews and i know that SOLID principles and Design patterns are nightmares for the novice developers and even for the experienced people they struggle to understand about the actual architecture of the patterns and how to implement it in projects.

This is the basic reason i am publishing this course on SIMPLIV. I am sure my students will like this course and this course will be helpful for them for their professional career.

Basic knowledge
You just need to have basic knowledge of C# programming language also there is no prior installation steps required, All you need is computer with Visual Studio Installed in it.This C# course is for those who are having basic knowledge of C# and wants to learn more about SOLID principles and Design patterns of C# in a quick and easy way with practical hands on experience
What will you learn
At the end of this course students will be able to understand SOLID principles and C# design patterns and architecture of it with usage in real life business application development
This course will help those students who are having knowledge of C# and visual studio and willing to explore different design patterns for development as well as for interviews
To continue:

C/C++ vs. Rust: A developer’s perspective

C/C++ vs. Rust: A developer’s perspective

In this post, you'll see the difference between Rust and C/C++ in a developer’s perspective

C++ is an incredibly fast and efficient programming language. Its versatility knows no bounds and its maturity ensures support and reliability are second to none. Code developed in C++ is also extremely portable, all major operating systems support it. Many developers begin their coding journey with the language, and this is no coincidence. Being object-oriented means it does a very good job of teaching concepts like classes, inheritance, abstraction, encapsulation and polymorphism. Its concepts and syntax can be found in modern languages like C#, Java and Rust. It provides a great foundation that serves as a high speed on ramp to the more popular, easier to use and modern alternatives.

Now it’s not all rosy. C++ has a very steep learning curve and requires developers to apply best practices to the letter or risk ending up with unsafe and/or poor performing code. The small footprint of the standard library, while most times considered a benefit, also adds to the level of difficulty. This means successfully using C++ to create useful complex libraries and applications can be challenging. There is also very little offered in terms of memory management, developers must do this themselves. Novice programmers could end up with debugging nightmares as their lack of experience leads to memory corruption and other sticky situations. This last point has lead many companies to explore fast performing, safe and equally powerful alternatives to C++. For today’s Microsoft that means Rust.

The majority of vulnerabilities fixed and with a CVE [Common Vulnerabilities and Exposures] assigned are caused by developers inadvertently inserting memory corruption bugs into their C and C++ code - Gavin Thomas, Microsoft Security Response Center
Rust began as a personal project by a Mozilla employee named Graydon Hoare sometime in 2006. This ambitious project was in pre-release development for almost a decade, finally launching version 1.0 in May 2015. In what seems to be the blink of an eye it has stolen the hearts of hordes of developers going as far as being voted the most loved language four years straight since 2016 in the Stack Overflow Developer Survey.

The hard work has definitely paid off. The end result is very efficient language which is characteristically object oriented. The fact that it was designed to be syntactically similar to C++ makes it very easy to approach. But unlike the aforementioned it was also designed to be memory safe while also employing a form of memory management without the explicit use of garbage collection.

The ugly truth is software development is very much a trial and error endeavor. With that said Rust has gone above and beyond to help us debug our code. The compiler produces extremely intuitive and user friendly error messages along with great direct linking to relevant documentation to aid with troubleshooting. This means if the problem is not evident, most times the answer is a click away. I’ve found myself rarely having to fire up my browser to look for solutions outside of what the Rust compiler offers in terms of explanation and documentation.

Rust does not have a garbage collector but most times still allocates and release memory for you. It’s also designed to be memory safe, unlike C++ which very easily lets you get into trouble with dangling pointers and data races. In contrast Rust employs concepts which help you prevent and avoid such issues.

There are many other factors which have steered me away from C++ and onto Rust. But to be honest it has nothing to do with all the great stuff we’ve just explored. I came to Rust on a journey that began with WebAssembly. What started with me looking for a more efficient alternative to JavaScript for the web turned into figuring out just how powerful Rust turns out to be. From its seamless interop…

Automatically generate binding code between Rust, WebAssembly, and JavaScript APIs. Take advantage of libraries like web-sys that provide pre-packaged bindings for the entire web platform. – Rust website
To how fast and predictable its performance is. Everything in our lives evolves. Our smartphones, our cars, our home appliances, our own bodies. C++ while still incredibly powerful, fast and versatile can only take us so far. There is no harm in exploring alternatives, especially one as exceptional and with as much promise as Rust.

What do you guys think? Have you or would you give Rust a try? Let us know your thoughts in the comments section below.

Thanks for reading

If you liked this post, share it with all of your programming buddies!

Follow us on Facebook | Twitter

Further reading

Why you should move from Node.js to Rust in 2019

Rust Vs. Haskell: Which Language is Best for API Design?

7 reasons why you should learn Rust programming language in 2019

An introduction to Web Development with Rust for Node.js Developers