filmov
tv
Why I DON'T talk about DESIGN PATTERNS and SOLID PRINCIPLES of Object Oriented Programming like C++

Показать описание
Everyone, in this video, I'm answering one the question which many of you have asked me repeatedly, i.e. Why don't I create contents on important topics in Object Oriented Programming like Design Patterns (e.g. Singleton pattern and factory pattern) and Solid Principles (e.g. Single Responsibility Principle and Dependency Inversion Principle).
These patterns and principles are not new and is generally part of the overall learning objectives C++ Programming Language as well as for Java Programming Language. Infact these topics are used widely for programming interview questions.
These patterns and principles were created with the best intention and the theory is absolutely perfect, but after writing code for almost 20+ years I can say that they are not as useful in the practical aspects and they advertised to be.
In today's world, with the arrival of Smart Pointers we don't need Singleton Pattern and the idea of factory design pattern which is implemented with complex inheritance hierarchy ( Virtual Constructor), makes factory pattern a complex undertaking. If you don't need to create hundreds of objects, you don't need to take a complex undertaking called factory pattern
Also, for principles like single responsibility principle, I totally agree with the idea of clean code. But we need to trade off between clean and complex. Also, based on the problem I'm trying to solve or the complexity of my problem, the idea of simplicity might very well be different for different circumstances.
Also, these pattern and principles like dependency inversion principle are very descriptive in nature as it enforces a way of implementation which might not be the best way of implementing the same. Hence based on my experience I can safey say that they are not silver bullets
#designpatterns #solidprinciples #java #C++ #programming #softwaredevelopment #softwareengineering #softwaredesign
-----------------------------------------------------------------------------------------------------------------------
Hi I am Daksh Deepak K Gupta (nickname & Preferred:- Daksh). I am a software developer and creating software since 1999. During the course of my career I've worked as a software Developer, Architect as well as Chief Technology Office.
I started this channel to share my knowledge and understanding of Software Development which I believe will help people in writing better and quality code. This channel covers broad set of Computer Science and Software Engineering topics including but not limited to Programming.
Here is the kind of contents you can expect from my YouTube Channel i.e. both existing and upcoming
1. Data Structures and Big O Notations, Algorithms and Algorithm complexity
2. C++ programming (latest specifications C++17 and C++20 ) tutorial. Learn How to create high performance system applications using one of the oldest and still relevant programming Language.
3. Learn modern Python Programming (Python 3.x) and understand how python is used for Data Science, Data Analytics and Machine Learning.
4. Learn Python libraries like NumPy, Scipy, Scikit-learn, Pandas and more
5. Learn JAVA, one of the widely used and most versatile Programming Language. Explore Java Libraries like Spring and SpringBoot
6. Learn JavaScript and understand how JavaScript can be used for Functional Programming as well as for Reactive Functional Programming. Explore JavaScript libraries like ReactJs, BaeconJS, Mocha and ChaiJS
7. Learn Golang, an extremely fast, microservices ready programming language with goroutines
8. Systems Programming including details about writing memory and multi Core CPU efficient codes.
9. Understand Machine learning and Neural Networks and create prediction engines. Lean Languages, tool, and libraries for the same
10. Understand and explore Neural Network with PyTorch, Keras, OpenCV and TensorFlow
11. How to Create cross platform mobile apps
12. Explore SQL and NoSQL databases like PostgreSQL, MongoDB, Redis, Apache Spark, neo4j and Apache Cassandra
6. Learn source with git, which is one of the most widely used decentralized source control. Learn more about branches merge and commit
7. Learn about persistent nosql databases like mongodb using my mongodb tutorial as well as in memory nosql databases like redis using my redis tutorial. you'll also learn about using redis nodejs
8. Understand the concept of handling large data e.g. Big Data
9. Learn about graph theory and graph database
These patterns and principles are not new and is generally part of the overall learning objectives C++ Programming Language as well as for Java Programming Language. Infact these topics are used widely for programming interview questions.
These patterns and principles were created with the best intention and the theory is absolutely perfect, but after writing code for almost 20+ years I can say that they are not as useful in the practical aspects and they advertised to be.
In today's world, with the arrival of Smart Pointers we don't need Singleton Pattern and the idea of factory design pattern which is implemented with complex inheritance hierarchy ( Virtual Constructor), makes factory pattern a complex undertaking. If you don't need to create hundreds of objects, you don't need to take a complex undertaking called factory pattern
Also, for principles like single responsibility principle, I totally agree with the idea of clean code. But we need to trade off between clean and complex. Also, based on the problem I'm trying to solve or the complexity of my problem, the idea of simplicity might very well be different for different circumstances.
Also, these pattern and principles like dependency inversion principle are very descriptive in nature as it enforces a way of implementation which might not be the best way of implementing the same. Hence based on my experience I can safey say that they are not silver bullets
#designpatterns #solidprinciples #java #C++ #programming #softwaredevelopment #softwareengineering #softwaredesign
-----------------------------------------------------------------------------------------------------------------------
Hi I am Daksh Deepak K Gupta (nickname & Preferred:- Daksh). I am a software developer and creating software since 1999. During the course of my career I've worked as a software Developer, Architect as well as Chief Technology Office.
I started this channel to share my knowledge and understanding of Software Development which I believe will help people in writing better and quality code. This channel covers broad set of Computer Science and Software Engineering topics including but not limited to Programming.
Here is the kind of contents you can expect from my YouTube Channel i.e. both existing and upcoming
1. Data Structures and Big O Notations, Algorithms and Algorithm complexity
2. C++ programming (latest specifications C++17 and C++20 ) tutorial. Learn How to create high performance system applications using one of the oldest and still relevant programming Language.
3. Learn modern Python Programming (Python 3.x) and understand how python is used for Data Science, Data Analytics and Machine Learning.
4. Learn Python libraries like NumPy, Scipy, Scikit-learn, Pandas and more
5. Learn JAVA, one of the widely used and most versatile Programming Language. Explore Java Libraries like Spring and SpringBoot
6. Learn JavaScript and understand how JavaScript can be used for Functional Programming as well as for Reactive Functional Programming. Explore JavaScript libraries like ReactJs, BaeconJS, Mocha and ChaiJS
7. Learn Golang, an extremely fast, microservices ready programming language with goroutines
8. Systems Programming including details about writing memory and multi Core CPU efficient codes.
9. Understand Machine learning and Neural Networks and create prediction engines. Lean Languages, tool, and libraries for the same
10. Understand and explore Neural Network with PyTorch, Keras, OpenCV and TensorFlow
11. How to Create cross platform mobile apps
12. Explore SQL and NoSQL databases like PostgreSQL, MongoDB, Redis, Apache Spark, neo4j and Apache Cassandra
6. Learn source with git, which is one of the most widely used decentralized source control. Learn more about branches merge and commit
7. Learn about persistent nosql databases like mongodb using my mongodb tutorial as well as in memory nosql databases like redis using my redis tutorial. you'll also learn about using redis nodejs
8. Understand the concept of handling large data e.g. Big Data
9. Learn about graph theory and graph database
Комментарии