SOLID Design Principles in

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ธ.ค. 2024

ความคิดเห็น •

  • @DecodedFrontend
    @DecodedFrontend  2 ปีที่แล้ว +7

    💥 Learn Angular Forms in-depth and start building complex form controls with ease💥
    🔗 10% discount for the first 10 students - bit.ly/advanced-ng-forms-discounted
    💡 Short Frontend Snacks (Tips) every week here:
    Twitter - twitter.com/DecodedFrontend
    Instagram - instagram.com/decodedfrontend
    LinkedIn - www.linkedin.com/in/dmezhenskyi

  • @alexshubin1
    @alexshubin1 ปีที่แล้ว +4

    Thanks a lot for this video. I'm not a native English speaker but I was very impressed that you managed to explain the Liskov principle much better than I heard in my native language. This is because your explanation was from real life but not from books.

  • @adriangasiewicz4084
    @adriangasiewicz4084 3 ปีที่แล้ว +42

    The Dependency Inversion Principle use case is great.
    The combination of local provider, Injection Token, useExisting and Content Projection is just epic.
    Good job Dmytro!

  • @phuc_cuhp
    @phuc_cuhp 2 ปีที่แล้ว +1

    5:04 if you're not good at listening English (not your native language) like me, and has a little trouble to get what rule he said, it's the "And rule" (the auto caption generates "end", and I took some time to figure it out)

    • @DecodedFrontend
      @DecodedFrontend  2 ปีที่แล้ว +1

      Thank you Phuc! 🙏🏻 indeed I meant “And-Word-Rule“. Sorry for inconvenience, I have fixed the subtitle 😊

    • @phuc_cuhp
      @phuc_cuhp 2 ปีที่แล้ว

      You're welcome 😊

  • @AndrewRowenko
    @AndrewRowenko 3 ปีที่แล้ว +8

    Thank you! Very helpful. It is quite challenging to find such a good combination of integrity, consistency and practicality inside one video about Angular. Definitely favorite frontend youtube channel!

  • @Moinshaikh611
    @Moinshaikh611 ปีที่แล้ว +2

    This content is really really awesome
    Just asking which extension you are using for creating component

    • @DecodedFrontend
      @DecodedFrontend  ปีที่แล้ว

      Thank you! The extension is called NX Console

  • @jojojawjaw
    @jojojawjaw 2 ปีที่แล้ว

    Your channel is handsdown the best Angular channel on TH-cam, many thanks!

  • @RickyBanerjee
    @RickyBanerjee 3 ปีที่แล้ว +7

    This is very rich content, thanks for sharing it across.

  • @seblaise94
    @seblaise94 3 ปีที่แล้ว +6

    Awesome video, what is the name of the extension your using for generating the component?

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +6

      Hi, it is called “NX console” :)

  • @TheMaltissimo
    @TheMaltissimo 2 ปีที่แล้ว

    Was looking for an angular related channel and this is noice, well explained and good stuff. Thank you

  • @westhack3552
    @westhack3552 3 ปีที่แล้ว +1

    Thank you so much. This is all I've been searching for months.

  • @miguelcastillo7346
    @miguelcastillo7346 2 ปีที่แล้ว +1

    Admirable your comprehension of Angular, thanks god i found your channel, thank you teacher.

  • @css2014
    @css2014 3 ปีที่แล้ว +3

    I was looking for something like this. Is kind of hard to understand this concepts but with easy examples as you showed, is just simple ! thanks

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว

      Thank you for your feedback 😊 glad you liked it!

  • @sour4ik
    @sour4ik 2 ปีที่แล้ว +1

    Not sure about Open/Close principle. For me your explanation looks more related to code reusability. I expected smth more parent - child (when child class extends parent) related examples. What do you think?
    But explanations of other principles are amazing)

  • @pastagaz4241
    @pastagaz4241 3 ปีที่แล้ว +7

    Definitely you have to be mentioned in the Angular documentation!
    As always, another useful video on your useful YTchannel !

    • @JmonteroArg
      @JmonteroArg 3 ปีที่แล้ว

      Make a pull request adding the link!

    • @4444-c4s
      @4444-c4s 6 หลายเดือนก่อน +2

      True. Even Angular Team will know some new concepts 😆

  • @BC2Monster
    @BC2Monster 2 ปีที่แล้ว

    Not gonna lie, i didn't think i'd learn anything here, but damn the DI Principle was partly new to me. Thumbs Up, thank you for showing me that!

  • @SafetyLast-_-
    @SafetyLast-_- 2 ปีที่แล้ว +2

    Does anybody knows what is the name of VSCode extension for colorized offsets in CSS and HTML templates?
    P.S. Thanks for the video, Dmytro!

  • @anupbista8427
    @anupbista8427 3 ปีที่แล้ว +4

    Finally New Video 😊

  • @prendre-la-responsabilité
    @prendre-la-responsabilité 2 ปีที่แล้ว

    it's the most impressive video on frontend topic! huge and unique content, thank you a lot!

  • @user921cc87
    @user921cc87 3 ปีที่แล้ว +1

    You have made my day!
    Thanks a lot.
    Cheers from Tbilisi✊🏻

  • @Timofei-yy5nm
    @Timofei-yy5nm 7 หลายเดือนก่อน

    Hello, Dmitry!
    Could you please add more design pattern videos in context of Angular?
    I find your approach extremely useful to understand

  • @APEDUCO
    @APEDUCO 3 ปีที่แล้ว +3

    Great Video, Loved It ❤, BTW Which extention are you using to generate components.

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +2

      Hi! Thank you! I use ext called nx console marketplace.visualstudio.com/items?itemName=nrwl.angular-console

    • @APEDUCO
      @APEDUCO 3 ปีที่แล้ว

      @@DecodedFrontend thank you very much, I appreciate it 👍👍

  • @pauloafpjunior
    @pauloafpjunior 3 ปีที่แล้ว +5

    Amazing video, Dmytro. Do you intend to continue this serie? Talking about architecture styles in Angular, such as CleanArch, will be great.😃

  • @yeinsdavidllanohernandez1228
    @yeinsdavidllanohernandez1228 8 หลายเดือนก่อน

    What a great class 👏, I would like to know more about how we can abstract logic everywhere to have a code as clean as possible

  • @ayaramzy6815
    @ayaramzy6815 3 ปีที่แล้ว +2

    I really 🤍🤍🤍🤍🤍🤍 u .You rescue me today in the interview.Your video before the interview with 2 hours makes solid very clear.Allah bless u .Keep do this please apply head first design pattern in angular also 🤍🤍🤍🤍 u from Egypt.

    • @DecodedFrontend
      @DecodedFrontend  2 ปีที่แล้ว

      Glad to hear that, Aya! Good luck with your new job ;) P.s sorry for the late reply

  • @RSmarza
    @RSmarza 3 ปีที่แล้ว +10

    Great content! Congratulations 👏👏
    Would be great if you create a video about debugging angular memory leaks. 😉 it's an difficult issue to find good references.

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +7

      Great suggestion! Thank you 😊

    • @karthik_vijay
      @karthik_vijay 2 ปีที่แล้ว +1

      Make a video on takeUntil of RxJS Subject which can help reduce memory leaks while using observables.

  • @anish92
    @anish92 ปีที่แล้ว +1

    So Thankful for this Video

  • @tebohomakibile3385
    @tebohomakibile3385 ปีที่แล้ว

    This is brilliant content. Beautifully expalined.

  • @haroldpepete
    @haroldpepete 3 ปีที่แล้ว +2

    That was awesome, you won a new susbcriber, thank forr share

  • @Sunill_Waugh
    @Sunill_Waugh 3 ปีที่แล้ว +3

    Hi Dmytro, which extension are you using to create new components? Looks good option to CLI, thanks

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +3

      It is NX Console - ext for vs code

  • @hiteshsuthar1097
    @hiteshsuthar1097 ปีที่แล้ว +1

    How to do Component communication as it becomes much harder when working with multiple sub components. Especially, getting data in the parent component.

  • @danny24_24
    @danny24_24 2 ปีที่แล้ว

    This was great. Thanks for putting this together!

  • @whatssnots
    @whatssnots 3 ปีที่แล้ว +1

    Excellent tutorial! Earned a sub :)

  • @coldcircuit99
    @coldcircuit99 3 ปีที่แล้ว +2

    As always, thank you for quality materials. Gonna check it yout later :)

  • @gururajmoger8649
    @gururajmoger8649 3 ปีที่แล้ว +1

    Pls explain how to make reusable angular tabs as shared or child components.. that should open components dynamically

  • @adityamore287
    @adityamore287 2 ปีที่แล้ว +1

    Thank you, Dmytro. I love you man. 👍👍👍👍

  • @JmonteroArg
    @JmonteroArg 3 ปีที่แล้ว +1

    This contains video invaluable information.
    Thank you very much for putting the time and effort creating this.
    The example is fantastic with the right mount of complexity to deliver the learning lesson.
    Thank a lot. Keep it up. I really like the content you are making.

  • @ATTI0822
    @ATTI0822 3 ปีที่แล้ว +1

    Very great examples. I think best I've seen so far. Thanks!

  • @apoorvakhairnar7125
    @apoorvakhairnar7125 2 ปีที่แล้ว

    You're genius !! Thank you for sharing your knowledge with us :)

  • @BorisTheGrunt
    @BorisTheGrunt ปีที่แล้ว

    really good examples thanks. specially for DI

  • @rconr007
    @rconr007 3 ปีที่แล้ว

    Thanks you have explained this difficult subject in a way that makes it digestible.

  • @the-real-pawook
    @the-real-pawook ปีที่แล้ว

    Гуд ту кноу, дуже дякую 🙃

  • @VipinRawat_Offcial
    @VipinRawat_Offcial 3 ปีที่แล้ว +1

    All explained very well specially dependency inversion principle. 🙏🙏👌👌

  • @superduper1211
    @superduper1211 3 ปีที่แล้ว +2

    like before watching ... as always

  • @ayoubelhayat9650
    @ayoubelhayat9650 3 ปีที่แล้ว +1

    Excellent explanation. Thank you

  • @SanketL3730
    @SanketL3730 2 ปีที่แล้ว

    Great video.
    Just like to know how to integrate git in vscode just like you?

  • @harpreetsinghsahota5191
    @harpreetsinghsahota5191 3 ปีที่แล้ว +1

    Hey Dmytro, Just a thought that we can mark properties optional in interfaces in that way we need not to make multiple interfaces. What are you guys think about it???

  • @fatiharkan5163
    @fatiharkan5163 3 ปีที่แล้ว

    Thanks a lot, Dmytro! I might have some recommendations for you. I hope It would be great if you describe or explain and show your little padawan's the right way of use.
    1 - Observables
    2 - HostListeners.
    Thanks a lot!

  • @kennethebora6367
    @kennethebora6367 3 ปีที่แล้ว

    Can you share what extension you're using for those nice block color highlights? Thanks!

  • @Ag3sd
    @Ag3sd 3 ปีที่แล้ว +1

    Good content. I am watching in 2x and it feels normal. 😊

  • @jacqueskloster4085
    @jacqueskloster4085 2 ปีที่แล้ว

    A little side note for the Interface Segregation Principle, since it has a major benefit that maybe isn't clear in the beginning:
    The angular lifecycle hooks are a great example since every hook method has its own interface. The benefit of the principle is that
    a) implementation developers do not need to implement irrelevant code (as demonstrated in the video)
    and b) implementation developers of your library/component whatever will only ever see those bits of the implemented code that is relevant to them when you provide them references to classes.
    b is maybe not so obvious but imagine you had a class that has some methods that must be public due to other internal dependencies (the way component classes are forced to have public props/methods for their template immediately comes to mind) but you don't necessarily want the implementation developers that use your class see all the methods. The solution is to write an interface and only ever provide variables to the class typed with that interface. That could be in callback Methods, abstract methods or anywhere else where an instance to a consumable class would occur.
    This pattern is especially useful in typescript where you have so many different ways to compose your classes due to the nature of javascript.
    Example: You have an API abstraction with read and write methods (yes that sort of breaks CQRS, but let's ignore that) but you want to expose only the reader API although all operations are implemented in one class. That's where you would expose the class instance by typing it with the IReader (silly name, sorry) interface. Consumer code can now only access the reader methods. Unless they (apiInstance as IWriter).write :D

  • @pitsaveliev
    @pitsaveliev ปีที่แล้ว

    Отличное видео! Лучшее из тех что я видел на эту тему. Лайк и подписка!

  • @Billiam112
    @Billiam112 3 ปีที่แล้ว +1

    Fantastic topic! Thanks a lot! 👌

  • @balajeebala7810
    @balajeebala7810 3 ปีที่แล้ว

    Tell about your glasses ,, Where do u get them and which is best for developers ?

  • @ganesh56789
    @ganesh56789 3 ปีที่แล้ว

    Super cool content... Thanks, I am glad that I came across your channel 🙏

  • @ZeroInfinityVideo
    @ZeroInfinityVideo 2 ปีที่แล้ว

    Can you do a video on unit testing long poll with Rxjs using timer, switchmap and takeuntil?

  • @yuriinadilnyi3029
    @yuriinadilnyi3029 3 ปีที่แล้ว +2

    What would I say?
    - It was so fuc**ng gooood))) Thx a lot)

  • @rohitsachdeva4624
    @rohitsachdeva4624 ปีที่แล้ว

    Hi
    can you also create a video on how we can create micro frontends.

  • @jonadushi
    @jonadushi 2 ปีที่แล้ว

    Thank you Dmytro! I love your videos. You are gifted, clear and short explanation, easy to follow. Thank you 🙏

  • @fryser007
    @fryser007 ปีที่แล้ว

    One of the best exemple of SOLID in real-life Thank you! The last DI exemple was confusing tho :)

  • @tarassavchenko2317
    @tarassavchenko2317 2 ปีที่แล้ว

    At about the example with di and services. If we inject the service, even if Angular substitutes its token. If we then need to replace the service with another and remove it, then we will not be able to do it, right? Because it is used as an interface
    Isn't that a problem?
    In a traditional OOP, we simply create an abstract class, or interface, and inject it. Therefore, we can dynamically change services if they implement an interface. But if in Angular service = interface, then we can do so only by replacing service statically?Like using "useExisting"

  • @trk1139
    @trk1139 6 หลายเดือนก่อน

    Do you have any video which talks about Replaysubject() in RxJs ?

  • @mukeshm280
    @mukeshm280 2 ปีที่แล้ว

    Can you please list out the VS Code plugins you are using?

  • @MythsoftheWorld-lm8oi
    @MythsoftheWorld-lm8oi 6 หลายเดือนก่อน

    Hi, What extension do you use for generate a class?

  • @DavidSoles
    @DavidSoles 3 ปีที่แล้ว +1

    Great explanation. Thanks 👍🏼

  • @KamelJabber1
    @KamelJabber1 3 ปีที่แล้ว +1

    Excellent content!

  • @archiee1337
    @archiee1337 3 ปีที่แล้ว +2

    Awesome stuff

  • @mashab9129
    @mashab9129 2 ปีที่แล้ว +1

    hi Dmytro, thanks for sharing great content - very informative and easy to follow/grasp thanks to your teaching style.

  • @tarassavchenko2317
    @tarassavchenko2317 2 ปีที่แล้ว +1

    I have the same problem now.
    I'm trying to understand the OOP principles and their patterns, but it's still hard to see them in Angular.
    And if you can find examples of principles, it is more difficult with specific patterns, because you read mainly on examples of object-oriented languages, where only one paradigm, and we have OOP, Functional programming, Reactive programming. And you just ask yourself "The problem is that I do not find them yet, or we just do not have them in JS/TS"

  • @alison.aguiar
    @alison.aguiar 3 ปีที่แล้ว +2

    Thanks guy 😀🤝

  • @MrKOHKyPEHT
    @MrKOHKyPEHT 2 ปีที่แล้ว

    You right: splitting by extremely small pieces is overkill

  • @jahanzebchoudhry6792
    @jahanzebchoudhry6792 3 ปีที่แล้ว +1

    Hi Dmytro, which extension are you using that shows file size on the top? Thanks

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +1

      Hi! This is an extension called Import Cost marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost

    • @jahanzebchoudhry6792
      @jahanzebchoudhry6792 3 ปีที่แล้ว

      @@DecodedFrontend Thanks again!

  • @TheDeseth38
    @TheDeseth38 2 ปีที่แล้ว

    Have you thought about making some series about jasmine and tests in Angular? I would be happy to see it on your channel. You do great, keep it like this.

  • @praktycznewskazowki6733
    @praktycznewskazowki6733 2 ปีที่แล้ว +1

    Hi, i have one question :) What is aan impact to bundle size creating multimple components, services in single responsibilyty principle? It's ok to split logic as match as possible is any impact on bundle size? :)

    • @DecodedFrontend
      @DecodedFrontend  2 ปีที่แล้ว +1

      Hi! Well, Theoretically your bundle size may obtain few additional bytes if you had a large app but it is incomparable with benefits in maintaining the code base that follows SRP :)

  • @sourishdutta9600
    @sourishdutta9600 3 ปีที่แล้ว

    Thanks for making this video. Thank you 😊😊👍❤

  • @user-rp9iis1en6h
    @user-rp9iis1en6h 2 ปีที่แล้ว

    how to maintain single responsibility in case u need to show the user pre-selected values in the dropdown?

  • @Kreator321RG
    @Kreator321RG 3 ปีที่แล้ว +1

    Rally cool! Thanks

  • @binary-me
    @binary-me 3 ปีที่แล้ว

    One class file doing HTML, CSS and JS? Im sure you kept it together for ease of showing, but that itself breaks SRP.

  • @piotrszewczyk9749
    @piotrszewczyk9749 3 ปีที่แล้ว +1

    Great explanation as always! About DIP do you use injection token for multiple optional interfaces? Say weather implents reloadable, unitConversion and velocity implements unitConversion only. And parent component should be able to distinguish child capabilities and disable conversion, reload button accordingly.

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +1

      Hi Piotr! Thank you for feedback!
      If I encountered such a use-case I would go most probably with multiple tokens (each for every interface).

    • @piotrszewczyk9749
      @piotrszewczyk9749 3 ปีที่แล้ว +1

      @@DecodedFrontend and then provide same 'existing' class for both?

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +1

      If by 'existing' you mean useExisting than yes :)

    • @piotrszewczyk9749
      @piotrszewczyk9749 3 ปีที่แล้ว

      @@DecodedFrontend yes that is what meant ;)

  • @nitinshekhar7064
    @nitinshekhar7064 3 ปีที่แล้ว

    Any plan to create a tutorial on server side rendering in angular

  • @ShubhamSharma-xq4hg
    @ShubhamSharma-xq4hg ปีที่แล้ว

    Can you please make a another video for ng-content and ng-template . Like what is use case where we must use ng-content or ng-template .
    Like I know the one diff we can pass data from container to template but I want to know this in more details. Please help
    Thanks In advance.

  • @extspence
    @extspence 3 ปีที่แล้ว

    Would you consider mixing Generics into these examples? Do you use Generics?

  • @lenvaz8957
    @lenvaz8957 2 ปีที่แล้ว

    Awesome tutorial! 👍

  • @vishnum7811
    @vishnum7811 3 ปีที่แล้ว +2

    awesome stuff.

  • @nikitashinde-w7l
    @nikitashinde-w7l ปีที่แล้ว

    what is the name of extension he is using to generate components any idea ?

  • @atulgupta426
    @atulgupta426 3 ปีที่แล้ว +1

    Hi,
    Thanks for this good stuff. Can you please make a tutorial on view encapsulation and change detection?

  • @moacir8663
    @moacir8663 2 ปีที่แล้ว

    Loved it!

  • @genyklemberg
    @genyklemberg 3 ปีที่แล้ว +2

    Advanced content, thanks

  • @NaomiNos
    @NaomiNos 7 หลายเดือนก่อน

    What is this VS Code extension used in this video to run ng commands interactively?

  • @sudeshkodavoor548
    @sudeshkodavoor548 3 ปีที่แล้ว +1

    Last one is bridge pattern right?

    • @DecodedFrontend
      @DecodedFrontend  3 ปีที่แล้ว +2

      Exactly :) This design pattern actually implements at least 2 design principles: Dependency inversion and Open/Closed principle

    • @sudeshkodavoor548
      @sudeshkodavoor548 3 ปีที่แล้ว +1

      @@DecodedFrontend Thanks for this video its very informative...few months back I was searching SOLID principles using angular, today got a proper video with very nice explanation 👍

  • @maks-yaremenko
    @maks-yaremenko 2 ปีที่แล้ว

    very nice, thank you!

  • @gururajmoger8649
    @gururajmoger8649 3 ปีที่แล้ว +1

    Pls create angular ecommerce app will material and latest concept.. there is a very less tuts on angular..

  • @VitaliiPolulikh
    @VitaliiPolulikh 3 ปีที่แล้ว +1

    Nice, Thanks!!!

  • @maximermoshin393
    @maximermoshin393 3 ปีที่แล้ว

    Nice video. Thanks for sharing your knowledge.

  • @tz2014
    @tz2014 6 หลายเดือนก่อน

    Just one word, legend

  • @subba18
    @subba18 3 ปีที่แล้ว

    Can you do an video of Module Federation implementation in Angular 12 which has webpack 5.

  • @santoshraju9230
    @santoshraju9230 3 ปีที่แล้ว

    Excellent video. Thank you. Could you please do a video on ngTemplateOutlet?

  • @JoshDeveloper
    @JoshDeveloper 2 ปีที่แล้ว +3

    Good content as usual bro, I like it. ♥
    Just I wanna mention your little typo that "wether" must be "weather" :D
    Anyways,, keep posting such nice videos

  • @kamalCode
    @kamalCode 3 ปีที่แล้ว +1

    Sir, all coding principle and coding standards rules

  • @GuillermoArellano
    @GuillermoArellano 3 ปีที่แล้ว +1

    Another excellent video, Dmytro. Thank you for educating me on the use cases where SOLID could be used with Angular. I will have to re-watch that last Dependency Inversion section a few more times to understand better. Nevertheless, the 40 minutes taken up in this video flew by with so much knowledge you shared. Thank you for being awesome!

    • @DecodedFrontend
      @DecodedFrontend  2 ปีที่แล้ว

      Thanks a lot for your feedback, Guillermo! Much appreciated :)