The S.O.L.I.D. Principles of OO & Agile Design - Uncle Bob Martin

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

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

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

    Hey All: I just started TDD TV. TDD Practitioners apply SOLID principles and all sorts of other practices like Clean Code, etc when we practice TDD.
    SUBSCRIBE & hit the BELL to Learn! Many videos to come! (Also check out WeDoTDD.com!)
    👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺👾📺

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

    notes to self:
    29:00 polymorphism is why OO is so successful
    47:00 a DLL is not a logical grouping of classes but a grouping of classes that you want loaded at runtime
    49:00 single responsibility means design the class so it has a single reason to change or, to put it in another way, gather the things that change for the same reasons and separate the things that change for different reasons
    56:00 the database exists to make accessing data from a disk easier for us, disks are disappearing and in the future we will have virtually infinite amount of persistent ram
    59:00 open-closed: being able to change what the class does without changing its source code (you write new code but don't touch old code)

  • @camelcase9225
    @camelcase9225 5 ปีที่แล้ว +89

    Before the talk starts: "Ok what crazy tangent is he going to start with this time?"
    Talk starts: "WHY DO WE HAVE A MOON?"
    Not disappointed lmao

  • @GrindThisGame
    @GrindThisGame 6 ปีที่แล้ว +50

    I could listen to him for hours.

    • @Nick-db1zp
      @Nick-db1zp 3 ปีที่แล้ว

      I have been, and I can tell you, it is worth it

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

      All talks of him I find on youtube are roughly the same though :(

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

      I do same

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

    Most I’ve learned from a single TH-cam video in a very long time! Thank you for posting this lecture!

  • @devofshane4399
    @devofshane4399 8 ปีที่แล้ว +17

    Gotta love Bob's little tangents he has before he starts his talks. It is really effective at getting the listener's engaged in the talk.

  • @Codetutor-DemystifyCoding
    @Codetutor-DemystifyCoding 3 หลายเดือนก่อน

    I wish I could upvote this more than once. Take a bow!!!

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

    So cool to hear him talking about the "old" days and how thing were actually implemented... I started with C and C++ and still remember lots of this stuff.

  • @Gunth0r
    @Gunth0r 7 ปีที่แล้ว +88

    I'm starting to get why they call him "Uncle Bob". It's the crazy stories that make you think about the other more serious stuff he's saying. He oscillates wildly between foolishness and wisdom, which is the sign of a true teacher.

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

      I thought the name came from a co-worker who liked giving odd names to their colleagues.

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

      To me he is the Stephen King of code. Always on the edge of your seat.

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

      And the sign of a true uncle.

  • @stevehyles743
    @stevehyles743 9 ปีที่แล้ว +14

    A fascinating overview of the history of programming languages. After 50 mins two SOLID principals are introduced SRP and OCP but only surface deep.

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

      I haven't seen 1 lecture of him explaining the whole 5 principles

  • @ismailm123
    @ismailm123 7 ปีที่แล้ว +15

    I did clean code course with uncle bob and the tangent talks at start of each topic kept you focused also they were really interesting stories

  • @TheRaspPie
    @TheRaspPie 9 ปีที่แล้ว +11

    Wonderful insight into the history of OOP and what's it's really about. In fact, OO can be just an extension to some functional language or procedural one.. it has nothing to do with mutability or state at all.

  • @MartinJungblut
    @MartinJungblut 8 ปีที่แล้ว +29

    9:30 "We used to call it C++ for dummies."

  • @BangsarRia
    @BangsarRia 3 หลายเดือนก่อน

    James Gosling was at the language naming brainstorming session where people were drinking Peet's Java and someone suggested "Java", but no one remembers who it was.
    Some were dead set against Java as the name because they wanted descriptive names for it and a related product(s).
    Java and Silk may have been the only two names approved by legal at the time management insisted a name be chosen.

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

    Uncle Bob is a national treasure.

  • @notdrone
    @notdrone 8 ปีที่แล้ว +92

    starts at 3:23

    • @dashenno
      @dashenno 6 ปีที่แล้ว +9

      Anecdote ends at 8:14

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

      doing god's work

  • @Paretozen
    @Paretozen 9 ปีที่แล้ว +5

    What a fun and engaging speaker! Thanks.

  • @BangsarRia
    @BangsarRia 3 หลายเดือนก่อน

    Uncle Bob says programmers choose the computers at their companies. I don't think that has ever been my experience.
    When IBM first started producing PCs, they gave them to the Mainframe Salespeople who gave them to CTOs as presents. The CTOs didn't know what to do with them and stuck them in a closet.
    My experience was that microcomputers were introduced into companies by CTOs to control peripherals that IBM and DEC would not allow them to connect to the mainframes and minicomputers, for branch networks in Banks, and Wall Street quants who didn't want their formulae on insecure mainframes. These were architectural decisions and had nothing to do with programming languages.
    I was at Sun during the dotcom boom. Unlike its competitors, Sun's computers were web-ready, configured with massive numbers of threads, etc. The Salespeople were selling hardware to CTOs and threw in Professional Services for free. Our ability to readily create scalable Client-Server systems using Java and JSPs landed a lot of sales, and further lucrative work.

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

    At 20:05, Bob explains C had perfect encapsulation, and explains why C++ does not. He says, in C++, since the new operator needs to know the size of a class's object, it's definition therefore must be in a header file, hence losing encapsulation. My question is: Even in C, wouldn't you need to know the size of the structure you want to malloc?

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

      That's a good question! I think he means the paradigm encouraged by C++, instead of what you can do with C++. In C, you'd often have a function that would do the malloc for you, and you'd be responsible for calling the corresponding clean up function once you were done. As long as you'd be operating with a pointer to the struct and pass that to the functions in the header, the compiler would allow you to do that. You can do this in C++ too, but I believe the point Bob is making is about going the C++ way, i.e. using classes and 'new'.

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

    Great talk, as usual with Uncle Bob. Too bad he only made it to the "S.O." out of "S.O.L.I.D.".

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

      Ha. Yes. I came here specifically hoping for I. and D. since in the previous talked I just watched, he only got through S.O.L. Someone should try to book him for a D.I.L.O.S. talk.

  • @javiermarchetti1520
    @javiermarchetti1520 9 ปีที่แล้ว +20

    This guy is crazy, but I really like his videos

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

    You say that Sun was the first to realize that winning the hearts and minds of programmers. Way back in the 50s and 60s IBM figured it out too and gave universities huge discounts on systems. Unfortunately for IBM they forgot about it.

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

    This guy is awesome.

  • @TJ-hs1qm
    @TJ-hs1qm 7 หลายเดือนก่อน

    14:26 Algol: "Algorithmic Language" also a star and Arabic for Daemon (al ghoul)

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

    this guy is golden

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

    So wait how do we fix the class he described in the Single responsibility principle example?
    Edit : Oh ok he talks about it at 1:05:00

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

    I loved this video, but lets be honest... all those wonderful recollections meant we didn't actually cover the subject of the video.

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

      +Robert Leather
      I strongly disagree and I think you are missing the main point : AGILE. To design software systems in agile, Uncle Bob always suggests to think in the most loosely coupled ways of structuring the program blocks. Starting with the business logic with no gui and no db, which can be tested in each iteration, you will add your gui and db as dynamically "pluggable" modules.
      Most funniest-perfect way to tell the programmers that they should think beyond the injected and repeated keywords "inheritance, polymorphism etc and make things loosely coupled.

    • @GireesanNamboothiriP
      @GireesanNamboothiriP 9 ปีที่แล้ว

      +Dave Schinkel
      Really appreciate your team effort to improve the coding and having such great sessions, which we could watch on-line.
      I started following Uncle Bob right when I found them from NDC at Vimeo. Since then, kept on watching such videos, then further debates and hangout sessions from David (DHH) , Beck and Martin. Started practicing it throughout my codings, refactoring (using Boy's scout rule) and in an year, the program I wrote became complex; yet well maintainable. I could change my UI from native to web without cascading it to my logic, or change the database without cascading again. First time I really felt; "yeah! I did something good".
      What I missed is adding unit tests from the beginning; which I am trying to incorporate now. :-) . Problem again is the mindset from the management on spending that 30 seconds extra for unit tests and further the TDD :(
      Not yet there when marketing guys can just take the latest build and sell it when they want it, but I am striving to.

    • @Paretozen
      @Paretozen 8 ปีที่แล้ว

      +Dave Schinkel Absolutely Dave! I had a lovely day programming thanks to using TDD. All is covered, everything in the green, great tangible process. Now I have to stop working, but I don't want to.. so what better alternative than watching Uncle Bob :)
      I'll eat bread & water before dealing with fast, messy and untrustworthy code again!

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

    57:18 I don't think tables (arrays) are going away any time soon. It's true we don't have spinning disks anymore, but it still is much more efficient to read data that is contiguously laid out. Also, even though we'll have more memory in the future we'll still need to serialize our data. And lastly, computers aren't getting that much faster anymore. All capacities are still finite, and the idea that we don't need to care will (and has) lead to poor performance, and as such, poor software quality. In the end, programming is engineering, and engineering is about the physical reality. I don't think trying to 'escape the hardware' as an underlying principle and goal is a wise way forward. Abstractions aren't like math, because all abstractions are imperfect and each one comes with a complicated price tag.
    I absolutely agree with Bob on the point he makes about not "trusting" frameworks. The technical relationship is the wrong way around. Most websites have somehow missed this point, but then again web development is very broken.

  • @GK-rl5du
    @GK-rl5du 8 ปีที่แล้ว +1

    Thanks for the upload, a really fascinating talk.

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

    I love this man

  • @umer.on.youtube
    @umer.on.youtube 2 ปีที่แล้ว

    Does he have a problem with C# ?
    Is there some passive-aggression in his tone? Not sure!

  • @luke11.35
    @luke11.35 8 ปีที่แล้ว +1

    What IDE does he name at ~ 35:18?
    I can't make it out & I don't work with C#, NET, or Java.

    • @luke11.35
      @luke11.35 8 ปีที่แล้ว

      Many Thanks. 8)

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

    Uncle Bob

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

    8:15 where the actual talk starts

  • @gmoschwarz
    @gmoschwarz 9 ปีที่แล้ว

    The moon is made of the same material as the earth, except for the iron core of the earth, which comes from another body (the body of the size of Mars), but it couldn't belong to the solar system, because another sun must have produced it, the solar system either captured or it simply collided with earth.

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

    Sorry it's my audio device.

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

    Doesn't PL/SQL have functions local to other functions?

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

    It is the fifth not the 2nd or 3rd.

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

    18:36 bob gettin angery

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

    at 36:50 what did the guy say?

  • @AtanasovPetar
    @AtanasovPetar 7 ปีที่แล้ว

    A correction about similarities between Java and C#.
    While they are similar, some of the similarities are only on the surface.
    Yes, the syntax is the same but the implementation is different.

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

      This whole talk is about how to communicate with your code, to OTHER PROGRAMMERS.
      Your point is literally, that machines read 100101010101010 NOT code.
      So the point of this talk is -> How to write code a human can understand.
      And your correction is, to say, what was already said...
      You weren't paying attention my friend.

  • @videofountain
    @videofountain 7 ปีที่แล้ว +6

    SOLID at th-cam.com/video/t86v3N4OshQ/w-d-xo.htmlm16s

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

    Can someone explain joke from 36:50 to not native English speaker please?

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

      The comment made by the audience suggests that uninstalling Resharper(Jetbrains) from your Windows(Microsoft) computer is not easy, and that it's a headache(it's difficult and unpleasant) to uninstall.

    • @zainulabidin5554
      @zainulabidin5554 8 ปีที่แล้ว +5

      I think it implies that if user uninstall re-sharper Microsoft will be in trouble because v. studio won't be that effective without it.
      So Jetbrains do have a way to damage microsoft

    • @alejandro_930fbcfc14
      @alejandro_930fbcfc14 5 ปีที่แล้ว

      I think he says "have you ever tried to uninstall it?"

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

      Because it’s sometimes even when you uninstall it, it won’t get completely uninstalled😂

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

    Three principles are covered nicely, but last two are not.

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

      naresh dhami its always the same, i cannot find a talk about everything

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

      +naresh dhami You can go to his own website and watch more videos like this. www.cleancoders.com

    • @behnamrasooli8801
      @behnamrasooli8801 8 ปีที่แล้ว

      I watched almost all of them and I highly recommend them. Although the Design Patterns section of it wasn't very helpful but the rest specially SOLID section was fantastic.

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

      He never really covers them because they arent as interesting and as insidious and subtle as the first 3 I feel. You can just read them from his book. For example DIP is simply to use an interface because high level (ie policy) modules shouldn't contain direct references (be dependent) on particular implementation. Its not much more nuanced than that.
      But the points he covers are way more nuanced.

  • @wtmk_bk
    @wtmk_bk 5 ปีที่แล้ว

    does anyone have a link where he gets past o?

    • @tddtv
      @tddtv  5 ปีที่แล้ว

      CleanCoders.com

  • @BenPearson_kd7uiy
    @BenPearson_kd7uiy 8 ปีที่แล้ว +24

    C# is Java done right;-)

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

      Microsoft products are not for programmers

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

      Java is also good. Java has much better backwards compatibility, in c# we had great framework/core split as well as many other breaking changes.

  • @sumertheory
    @sumertheory 5 ปีที่แล้ว

    did he mention objective c and jobs?

    • @comicsans1689
      @comicsans1689 5 ปีที่แล้ว

      Not in this talk, he mentioned Java and C# instead. In one of his other SOLID talks, he talked about Objective C and Steve Jobs.

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

    Don't get screwed by your GUI

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

    Who else is doing ICT283?

  •  6 ปีที่แล้ว

    What's the question in 1:08:35 ?

    •  6 ปีที่แล้ว

      Dave Schinkel thanks! I got the second part of the question which is about dependency injection or inversion. Couldn't catch the first part that was answered with the rect/square example.

    •  6 ปีที่แล้ว +1

      Oh, FYI, just got what they are talking about by paying attention to Uncle Bob repeating the question. He says: "Should i touch briefly on LISKOV----- and Dependency Inversion?". Those are the L and the D from SOLID.
      That's why he talks about the rectangle/square example, and why square cannot inherit from rectangle. Basically the answer is: "both Rectangle and Square should inherit from SHAPE, to comply with the Liskov's substitution principle".
      A Square IS a Rectangle, and that's Uncle Bob's bait because Square doesn't BEHAVE as a rectangle.
      en.wikipedia.org/wiki/Liskov_substitution_principle

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

    Uncle Bob entere 3:20

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

    S.O.L.I.D. principles start at 49:18

  • @ninjedi6710
    @ninjedi6710 5 ปีที่แล้ว

    OOP > FP

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

      You haven’t done FP have you. And if you did it was a JVM based language wasn’t it.

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

      @@HikarusVibrator I work with react. FP is my daily life.

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

      @@HikarusVibrator and python for backend

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

      @@ninjedi6710I’m enjoying miltiparadigmal languages. Even Java now have functional features so I’m not the only one. Some tasks are cleaner in fp, some in oop. Very nice when language allows combining

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

    😮