SOLID Design Principles (An Introduction for .NET Developers)

Поділитися
Вставка
  • Опубліковано 21 жов 2024

КОМЕНТАРІ • 107

  • @bonkugon
    @bonkugon 2 роки тому +3

    Just began my career in Software Engineering and went over SOLID today. This was almost exactly like the examples shown in my training! This is a great, quick way to introduce yourself to using design principles in code. Thank you :)

  • @ariana4597
    @ariana4597 3 роки тому +11

    Your content is actually amazing. Like im not kidding your videos are so good. Keep it up man

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Arian A, thanks for watching the video, and appreciate your feedback!

  • @dalmirogranas9990
    @dalmirogranas9990 2 роки тому +1

    Finally found a video that takes less than 30 min to explain this and even with examples 🙏🏽

  • @itsmebuddy4580
    @itsmebuddy4580 3 роки тому +3

    Clean, crisp and up to the point. Well done.

  • @kimktb
    @kimktb 3 роки тому +1

    You did a wonderful job breaking this topic down. Firs t video I have watched where I actually feel like I understand SOLID

  • @HISUPRIYO
    @HISUPRIYO 3 роки тому +2

    Perfect and precise demonstration of the SOLID principles... amazing!

  • @raisagandiputri2994
    @raisagandiputri2994 3 роки тому +6

    This is amazing and crystal clear! Good job, and thank you!

  • @Praveen.Kumar.
    @Praveen.Kumar. 3 роки тому +1

    Crisp and clear. Thanks!

  • @nagendrababu6316
    @nagendrababu6316 2 роки тому

    Thanks for the clear video on SOLID principles for people who are not from IT Background..

  • @MaheshChaudhari-xv8ox
    @MaheshChaudhari-xv8ox Рік тому

    Its good explanation and very easy for understanding...
    Thanks for sharing! 🙏

  • @oluwaseunliadi9893
    @oluwaseunliadi9893 2 роки тому

    Clearly Explained. Thanks

  • @iliashterev38
    @iliashterev38 4 місяці тому

    First - Thank you for your time and efforts to create and educate.
    Now - there is one thing about SRP that I keep asking. How you can build a car if you car class needs to:
    start engine,
    accelerate,
    steer,
    decelerate,
    apply breaks,
    etc.
    Lots of responsibilities and no way to escape them.
    We can create each sub-object separately, like engine, tires, steering system, which can have only one responsibility but in the end we need to combine them.
    Just like you OrderProcessor - has lots of responsibilities.
    So ... ??

  • @SudsPinu
    @SudsPinu 2 роки тому +1

    Great explanation. Thanks for the video.😊

  • @alexanderagyapong2328
    @alexanderagyapong2328 3 роки тому +1

    Clear and straight to the point. Well done 👍🏾

  • @rakesh-sarjine
    @rakesh-sarjine Рік тому

    Very good explanation . Thank you

  • @cahu01
    @cahu01 Рік тому

    Well done! Thank you very much. Your video is very helpful.

  • @nehemiahlimocheburet1411
    @nehemiahlimocheburet1411 2 роки тому

    so far the best explannation

  • @luis-teamsigame8008
    @luis-teamsigame8008 3 роки тому +1

    Man, thank so much for explaining this very well!

  • @rahulgharat4460
    @rahulgharat4460 3 роки тому

    Simple and clear explanation exept dependency inversion principle

  • @manjunaika1993
    @manjunaika1993 3 роки тому +2

    Thank you for very small, clean and clear explanation, keep up doing the good work :)

  • @EvertonLuizBastiani
    @EvertonLuizBastiani 3 роки тому +1

    Awsome. Objective and clear. Thank you so much dude ...

  • @johnbaltes7518
    @johnbaltes7518 3 роки тому

    Thanks, really helped me grasp an understanding for SOLID.

  • @truptijogi3117
    @truptijogi3117 3 роки тому +2

    Thank you DotNet Core Central for this video. Liskov Substitution Principle example is pretty much similar to Interface Segregation Principle. Please explain difference between this two, it would be much more helpful.

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому +5

      @Trupti Jogi, thanks for watching!
      Liskov substitution principle at the core suggests using an Interface instead of concrete classes. Now this interface can have multiple methods.
      Whereas Interface segregation mainly talks about breaking interfaces so that you do that have an overloaded interface.
      Please let me know if it makes sense.

  • @anand.amirtharaj
    @anand.amirtharaj 2 роки тому

    Great Article

  • @knightmarerip711
    @knightmarerip711 3 роки тому +1

    Very well explained! Keep up the good work!

  • @jasper5016
    @jasper5016 2 роки тому

    Thanks for this video.

  • @tourdesource
    @tourdesource 2 роки тому

    Well explained, thank you.

  • @RGcrasyRG
    @RGcrasyRG 3 роки тому

    Actually good examples, great video!

  • @KDSBestGameDev
    @KDSBestGameDev 3 роки тому

    For Open Closed Principle example, I think instead of making IOrderSaver[] you could have the cache repository get a db IOrderSaver itself and route the save through while being a cache itself. This way really no modification was needed to the "other" module. Brings the point across better IMHO. But thanks alot with those examples!!!

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Kevin KDSBest, thanks for watching! And thanks for the great example on Open/Closed principle.

  • @dy0mber847
    @dy0mber847 2 роки тому

    Cool explaination, gratz

  • @rajivsingh8241
    @rajivsingh8241 2 роки тому

    This is realy amazing video...thanks sir

  • @mahendrabalan9229
    @mahendrabalan9229 3 роки тому

    Great Job bro. Keep rocking

  • @gavmajhakhandnal1143
    @gavmajhakhandnal1143 2 роки тому

    very good explanation

  • @victoryvictorious633
    @victoryvictorious633 2 роки тому

    Very clear! Really useful. ❤️❤️❤️❤️

  • @sanjuprajapati068
    @sanjuprajapati068 2 роки тому

    Nicely explained..

  • @maheshbhatchandavar
    @maheshbhatchandavar 3 роки тому

    Really very nice explaination. helped me to understand SOLID principles.
    thumbsup man👍

  • @yazhodha
    @yazhodha 3 роки тому

    Understandable. Thanks!

  • @ashutoshmishra2170
    @ashutoshmishra2170 3 роки тому

    Thanks a lot . It’s help me a lot .

  • @samiriraqui750
    @samiriraqui750 2 роки тому

    is that dependency inversion that you have used in 7:36 during the process of explaining the single responsibility principle? Thank you in advance

  • @selviazs9242
    @selviazs9242 Рік тому

    Hello . Sorry i asking for the first code OrderProcessor thats in controller or services file ?

  • @leolocoism
    @leolocoism 3 роки тому

    F* greate content dude, amazing, thanks

  • @abhinavladdha8596
    @abhinavladdha8596 3 роки тому

    nice and precised explanation👍👍

  • @DebasmitSamal294
    @DebasmitSamal294 2 роки тому

    excellent

  • @iliashterev38
    @iliashterev38 4 місяці тому

    I think LSP is more about what Animals/Birds have in common. If Animal sleeps, eats and poops then the Bird should still eat, sleep and poop without touching anything about that behavior, neither in the super or subclass. So should do Ostrich, etc.

  • @BhupenderSingh-to3nk
    @BhupenderSingh-to3nk 3 роки тому

    Hello, in Open-closed principle you are suggesting instead of creating another method, we must come up with another type (possibly) and use Interface here for common functionality.
    But don't you think doing way we will end up creating multiple classes for each functionality required.
    There may be some exception when we can extend any existing class, could you please mention them, btw great explanation.

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Bhupender Singh
      , thanks for watching!
      I personally prefer to keep classes small and responsible for only a single task. And from my experience, I have seen is-a relationship (inheritance) causes long-term pain, whereas has-a (composition through the interface) is much easier to scale when your codebase grows.
      please let me know if it makes sense why I am advocating for a new class instead of adding a new method.

  • @rowdyghatkar
    @rowdyghatkar 3 роки тому +1

    Amazing content but can you make or have a video for all important shortcuts... like you used 'ctor' for constructor...

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому +1

      @Rahul Ghatkar, thanks for watching! I will create a video on shortcuts.

    • @rowdyghatkar
      @rowdyghatkar 3 роки тому

      @@DotNetCoreCentral Sure thanks 😊

  • @mahendranchinnaiah7593
    @mahendranchinnaiah7593 3 роки тому

    Thank you so much

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Mahendran Chinnaiah, thanks as always for watching the video!

  • @saurabhchauhan232
    @saurabhchauhan232 3 роки тому

    Thank you !

  • @voltairend
    @voltairend 2 роки тому

    Thanks

  • @bhanukanagala5732
    @bhanukanagala5732 2 роки тому

    The code which you had explained will it execute and give output??

    • @DotNetCoreCentral
      @DotNetCoreCentral  2 роки тому

      No, as you can see these were just examples and did not have any code inside of the body of the methods. The idea is to walk through the principles and how to implement the interface/class structure.

  • @ravitejavoleti784
    @ravitejavoleti784 3 роки тому

    Thank u so much dude..u explaination is awesome. Please create videos on design patterns also. If possible

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Raviteja Voleti, thanks for watching! In design patterns, what exact pattern you are looking for?

  • @manjunaika1993
    @manjunaika1993 3 роки тому

    Hi, I have seen your JWT implementation video, I guess in several scenarios like creating token classes are not based on SOLID Principles, Can you please make a video on how can I apply SOLID principles on JWT Implementation. I have implemented the same using SOLID principle in all the parts but I am unable to generate JWT and Refresh tokens with Constructor Injection. Is their any workaround or how to go about it. Please help me out.

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @Manju Naika, I will take a look and see if I can help you out with that.

  • @darkydrone
    @darkydrone 3 роки тому +2

    Making a class for every single method is a bit of an overkill for me.

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому

      @darkydrone, thanks for watching. I prefer single responsibility for every class, which most of the time ends up being one public function. There are exceptions but mostly one public function per class. But that's just my preference.

  • @kiroknight23
    @kiroknight23 3 роки тому

    Hi can you do a video for each principle in SOLID? in depth tutorial but can easily understand by beginners.

  • @ThemisTheotokatos
    @ThemisTheotokatos 3 роки тому

    So basically you create classes and each class has one simple method in it for the first two principles ?

    • @DotNetCoreCentral
      @DotNetCoreCentral  3 роки тому +1

      @Themis Theotokatos, what you are mentioning is for only the first principle. The Open/Close principle is a little different as I explained in the video.

  • @liamsmith6600
    @liamsmith6600 2 роки тому

    i feel the explanation of closed and open and single purpose are too strict as these are open to interpretation as to what a "single purpose" is, as in our workplace we have one class for dealing with the CRUD of each type of data thats seperated into 3 levels of classes, controller class logic class and repository class (and ofcourse the actual shape of the data in its own class) thats what we mean by single purpose, whereas this is single class for method almost.
    I see no down side in having methods that handle the same type of data in one class, and see a huge mess of files all using the same type for data they are passing and wouldnt consider this what single purpose means. I cant imagine an actual senrio where that would be helpful. we have multiple large projects using single purpose as dealing with single type of data and thats how controllers are auto generated by microsoft.

  • @naabun7633
    @naabun7633 Рік тому

    I think you're taking single responsibility literally. Having an interface for every granule functionality will lead too 1000s of interfaces. Why not IOrderManager have all managing functionalities since crud is managing responsibility.

  • @divyasinghpawar3983
    @divyasinghpawar3983 2 роки тому

    I don't understand
    Why still you guys take example of birds and animals??
    Lack of creativity?