GORUCO 2009 - SOLID Object-Oriented Design by Sandi Metz

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

КОМЕНТАРІ • 52

  • @edgeeffect
    @edgeeffect 2 роки тому +6

    Sandi is a wonderful speaker. SOLID is a collection of really good ideas hidden in language so opaque that it's almost impossible to decipher. And yet Sandi not only manages to decipher them, she re-presents them in a way "we mere mortals" can understand!

  • @jcookfl
    @jcookfl 7 років тому +26

    Very nice presentation. Sandi is highly skilled and very articulate. She's a real credit to our profession.

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

    Stable design principle, summarized in the likehood of change, is something that usually is not in the spotilight.
    Thanks for this awesome lesson, Sandi, you are an endless source of knowlodge.

  • @winterheat
    @winterheat 8 років тому +20

    Sandi has done Smalltalk for 10 years... no wonder her OOP is good

  • @StefanWelker
    @StefanWelker Рік тому +1

    This principle leads you from an easy to understand specific app to a difficult to understand generic one

    • @ChrisAthanas
      @ChrisAthanas Рік тому +1

      This Is all the opposite of what Alan Kay was referring to and everything that a procedural C programmer would get confused by the bad C++ ideas
      And we all suffer

  • @MarkJones
    @MarkJones 8 років тому +4

    The slides are @ skmetz.home.mindspring.com/img28.html

  • @13odman
    @13odman 6 років тому +5

    I don’t believe she’s right about interfaces. The question he asked was about doing dependency injection sanely . I have to say interfaced make a huge difference for this , as you’re defining what you expect . This is why strongly typed languages are better imo

    • @user-ph4zo2sr5v
      @user-ph4zo2sr5v 5 років тому +1

      You can define what you expect through other means, too, though (annotations, DSL). For example, you can use libraries which allow you to define types of parameters passed to the instantiation of an object (`active_interaction` is great for this). Still, I agree, strongly typed languages are better for this kind of thing, especially when combined with static type checking at compile time. In fact, I see that as an essential level of explicitness and cannot understand why you would guess types and expectations by name instead.

    • @13odman
      @13odman 5 років тому +1

      Damien R yeah, upon reflection , I agree

  • @rysw19
    @rysw19 9 років тому +8

    Nice talk. One rub is that the Config class is too general. Its implementation might as well be a hash.

    • @ArnaudMEURET
      @ArnaudMEURET 4 роки тому +2

      Definitely. Meta programming of config management meta configured in same file? Over engineering.

    • @sasukesarutobi3862
      @sasukesarutobi3862 4 роки тому +1

      I think it was as much to show that following these principles can lead you to find that what seemed like a lot of very specific behaviour is actually only a little bit of very specific behaviour hiding in more generic behaviour, which makes it easier to extend your code. Like she said early on, feel free to walk away from any given implementation if the trade-off in refactoring isn't there.

  • @andresbernal970
    @andresbernal970 5 років тому +5

    Wow it's give me clear understanding about SOLID. Thx Sandi Metz!

  • @user-ph4zo2sr5v
    @user-ph4zo2sr5v 5 років тому +1

    The code smell is unencrypted passwords in your [likely versioned] source code! :D Little dated (hash opts in method arg instead of new named args), but still fantastic! Seen it a good few times.

  • @danflemming3553
    @danflemming3553 4 роки тому +2

    Who's the "well known website which had to refactor all the Ruby code" at 44:46 which Sandi mentions? :)

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

      twitter, they moved out of ruby blaming ruby is slow.

  • @ChrisAthanas
    @ChrisAthanas Рік тому +1

    Recompiling isn’t a problem tho lol 12:04

  • @MIIIG
    @MIIIG 4 роки тому

    Does it Yahuda with was in camera?

  • @bahmani00
    @bahmani00 5 років тому +1

    10:58 the final goal is having maintainable code

    • @ChrisAthanas
      @ChrisAthanas Рік тому +1

      The final goal is ease if change
      Maintenance is due to design flaws not allowing ease of change

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

      And this stuff just moves away from that goal

  •  4 роки тому +2

    As an unskilled Ruby developer I could easily maintain the original version, not so much the final result. I would've loved Sandi to prove her points with less esoteric and over-engineered code. Great talk in any case.

    • @baernergiu
      @baernergiu 4 роки тому

      Francesc Rosas in the same boat, I see the value of abstraction, but if the whole codebase gets abstracted so strongly it becomes hard to read, and I am valueing readability highly

    • @ThePandaGuitar
      @ThePandaGuitar 4 роки тому +4

      Shit code indeed. It's not your experience, your gut is right. I don't know any world class programmers who follow this OO cult cargo crap blindly. They think they are solving some deep singular problem with their overengineered overgeneralized code and next thing you know the machine is 20x slower and doesnt solve the problem at hand efficiently. This is why our processors are orders of magnitude faster and the enterprise software still sucks. These programmers don't understand their machines and treat code as some general prose. Garbage.

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

      What’s great about it
      This all just confused things more

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

    26:44 ugh totally procedural code here
    No Alan Kay ideas anywhere
    This is just C++ in Ruby, and confusing

  • @davidrothschild5696
    @davidrothschild5696 4 роки тому

    Does anyone have a link to the code she references? The mindspring link doesn't seem to work for me.

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

      She shows it in the slides. She talks about the shared link because some people in the room couldn´t see the slides.

  • @ChrisAthanas
    @ChrisAthanas Рік тому +1

    17:29 it would be way easier to write this procedurally
    Bad example

  • @MrFedX
    @MrFedX 4 роки тому +3

    Amazing talk!

  • @davidko978
    @davidko978 9 років тому

    Does anyone know which company Sandi is talking about at: ua-cam.com/video/v-2yFMzxqwU/v-deo.html

    • @GerardCaulfield
      @GerardCaulfield 8 років тому

      Maybe Twitter "Over time, we had also accrued significant technical debt in our Ruby code base, making it hard to add features and improve the reliability of our search engine." blog.twitter.com/2011/twitter-search-is-now-3x-faster
      Although I'm not sure "refactor" is the right word here.

    • @davidko978
      @davidko978 8 років тому +1

      Hah right, more lile "replace"?

  • @webcoderph
    @webcoderph 6 років тому

    anyone has the source code of this talk? thanks

  • @vishnuprasanth4725
    @vishnuprasanth4725 5 років тому +1

    All these years I thought Sandy was a guy. I read her books in a male voice.

  • @CyberPin2001
    @CyberPin2001 4 роки тому +8

    Talk about over complicate things! Can you imagine someone with this way of thinking working on some of the early 8-bit hardware. Wouldn't stand a chance. Development and design does NOT need to be soooooo overdone! Waffle overload.

    • @ThePandaGuitar
      @ThePandaGuitar 4 роки тому +4

      agreed. I can't believe the comments on this video. This is on par with some of the worst programming I seen. This wouldn't stand a chance in any serious programming. Cult cargo OO programmers overcomplicating things, slowing down our machines thinking they are solving the singularity with their overgeneralized solutions. Please, solve the goddamn problem at hand. I advise watching Unity's principal programmer Mike Acton talks or reading Ulrich paper on what programmers should know about memory.

    • @CyberPin2001
      @CyberPin2001 4 роки тому +3

      @@ThePandaGuitar - well said. It's about time more people spoke up about this stuff 👍.

    • @-Jason-L
      @-Jason-L 2 роки тому +1

      “get off my lawn!"

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

      what is the connection between solid design and 8 bit hardware?

    • @StefanWelker
      @StefanWelker Рік тому +1

      ​@@alisunjaya main point is this is not solid design at all

  • @adabujiki
    @adabujiki Рік тому +2

    Lol you can tell this woman is into some weird stuff in the bedroom

    • @jonathan4835
      @jonathan4835 Рік тому +1

      What, like refactoring?

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

      @@jonathan4835lol
      Confusing things to the point of irrelevance