Basics Designs and How We Got Them Wrong
summary
Claims core language primitives are flawed: Liskov substitution principle is about explicit, verifiable contracts (origin 1994), so the square/rectangle ratio example only breaks LSP when the interface promises independent setters; converting a sync backup-downloader to async silently breaks exception semantics and failed in four projects; strings are hard to replace in .NET (sealed, runtime assumptions) while Java 9 and Facebook rewrote string implementations; immutability is handled differently in Kotlin vs Scala; async coloring and exception/finally edge cases cause real production bugs.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 1:09Why this talk won't change your work
- 2:12Liskov Substitution Principle
- 10:25Design by contract
- 12:08LSP violations and fixes
- 20:33Java and .NET immutability
- 26:18Dependency inversion
- 33:00Function coloring in C#
- 38:00Multiple inheritance myths
- 47:14Diamond problem
- 52:57Exception handling pitfalls
- 59:42Finally blocks failure
- 1:00:24Summary
related talks
58mBasics Designs and How We Got Them Wrong
57mCore Software Design Principles for Programmers
32mTimeless Design Principles
37mHonest mistakes caused by shallow interpretation of SOLID
01h 01mSome Programming Myths Revisited
34mHow I learned to stop worrying and love Functional Design
01h 02mProcedural Programming: It Never Went Away
50mSoftware Is Details
