Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    "The Clean Code Talks -- Inheritance, Polymorphism, & Testing"

    Google TechTalks

    3 HN recommenders · recommended in 6 months, 2009–2023

    YouTube

    38:25 · 438K views · Dec 5, 2008

    Misko Hevery's Clean Code Talk shows how to use object-oriented techniques such as polymorphism to remove repeated if and switch statements. The result is code that is easier to test, understand and maintain.

    HN commenters recommend it as a thorough treatment of replacing conditionals with polymorphism and why flags and deep ifs can be code smells.

    Software Engineering & LanguagesSoftware architecture & designTesting, debugging & developer tools
    1. 44:35
      Object-Oriented Programming is BadBrian Will2.6M views • 10 years ago
    2. 25:01
      Dan Abramov The wet codebaseeswarnichtsmehrfrei27K views • 5 years ago
    3. 1:12:10
      Practical Common LispGoogle TechTalks98K views • 19 years ago
    4. 1:03:29
      Maybe Not - Rich HickeyClojureTV181K views • 7 years ago
    5. 1:03:55
      🚀 TDD, Where Did It All Go Wrong (Ian Cooper)DevTernity Conference619K views • 8 years ago
    6. 1:02:26
      Solving Problems the Clojure Way - Rafal DittwaldClojure/north87K views • 7 years ago
    7. 1:03:31
      Brian Goetz - Stewardship: the Sobering PartsClojureTV39K views • 11 years ago
    8. 27:29
      Stop Writing ClassesNext Day Video962K views • 14 years ago
    9. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago
    10. 1:16:14
      Spec-ulation Keynote - Rich HickeyClojureTV136K views • 9 years ago
    11. 50:49
      Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 2019KanDDDinsky74K views • 6 years ago
    12. 45:55
      Ruby Conf 12 - Boundaries by Gary BernhardtConfreaks58K views • 13 years ago
    13. 49:54
      The Clean Architecture in PythonNext Day Video114K views • 12 years ago
    14. 43:04
      "Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)Strange Loop Conference468K views • 4 years ago
    15. 28:03
      Object-Oriented Programming is Embarrassing: 4 Short ExamplesBrian Will2.2M views • 10 years ago
    16. 56:58
      Philip Wadler - Propositions as Types (Lambda Days 2016)Erlang Solutions20K views • 10 years ago
    17. 1:07:10
      Brian Beckman: Don't fear the Monadjasonofthel33t415K views • 13 years ago
    18. 1:03:34
      Simon Peyton Jones - Linear Haskell: practical linearity in a higher-order polymorphic languageCurry On!19K views • 8 years ago
    19. 1:01:39
      "Simple Made Easy" - Rich Hickey (2011)Strange Loop Conference220K views • 5 years ago
    20. 1:10:05
      Are We There Yet - Rich HickeyZhang Jian24K views • 7 years ago

    6 comments from Hacker News

    1. @Mr_PMay 2022· in “Flags Are a Code Smell (2014)”

      It's not so much the existence of the flag, itself, but rather using an if-statement at the deepest-level of the call stack to conditionally modify behavior. This talk gives a great overview of why boolean flags (rather, if-statements) can be a code smell: this video OP's blogpost advocates for data-oriented design (e.g. Entity Component Systems) as a mechanism for avoiding this, whereas the talk I've linked advocates for OOP. Both mechanisms are equally valid (imho) and are inline with widely-adopted industry practices for software architecture.

      RecommendsView on HN
    2. @VBprogrammerJun 2010· in “Criminal Overengineering”

      I completely disagree with the example given in this blog. I don't have time to give a full explaination but I believe the google clean code talks gives a far better arguement than I ever could. On the general principle I agree that overengineering is to be avoided, but I actually think the example shows a clear disregard for Object Orientated principles. this video

      RecommendsView on HN
    3. @derwikiSep 2009· in “Using Polymorphism instead of conditionals when programming”

      Google posted a tech talk about this a while ago: this video which is more comprehensive than the posted article.

      RecommendsView on HN
    4. @tacitusarcNov 2023· in “Push ifs up and fors down”

      I think this is actually a great example of why `if` should be "pushed up." The objective of the code is to perform an particular operation on the walrus, given a condition. The is actually ifs being instead of polymorphism and a type system. Why does the walrus have these two functions, which must be called in different scenarios? Why not have a single function, and two types, and the correct type is passed in? Even given the current structure, we could accomplish this: // There are better ways to accomplish this, depending on the language func frobnicate(walrus) { return walrus.frobnicate(); } func transmogrify(walrus) { return walrus.transmogrify(); } // Somewhere high in the code if condition { processing_function = frobnicate } else { processing_function = transmogrify } // Somewhere else in the code for walrus in walruses { processing_function() } If the decisions are made as early as possible, they do not need to be littered throughout the code. The guts of the code can run without branches, performing the same operations every time, the output only modified through the construction graph. Of course, this is not a new idea: this video It was old 15 years ago.

      CitesView on HN
    5. @efraimJun 2016· in “Anti-if: The Missing Patterns”

      Misko Hevery did a Google Tech Talk about this some years ago, he also use a very similar example with switching on the birds. this video

      CitesView on HN