Basics Designs and How We Got Them Wrong
summary
Argues that core language constructs are misdesigned and gives concrete failures: the common square/rectangle LSP example is wrong and LSP must use explicit, verifiable contracts; converting sync calls to async async changes exception timing breaks fallback logic (found this exact bug across 5 projects in two weeks); strings are effectively hardcoded in .NET so replacements that saved memory at Facebook and Java are impossible on this platform; using/try/finally can swallow or drop exceptions unless handled with ExceptionDispatchInfo.CaptureThrow.
AI-written summary · about
chapters (11)
- 0:00Broken software design principles
- 1:49Liskov Substitution Principle
- 13:51LSP in async enterprise code
- 23:30Dependency inversion failure
- 27:42Core types like strings
- 30:49.NET async/await mess
- 32:35No multiple inheritance myth
- 41:51Diamond problem solutions
- 47:12C# exceptions breakage
- 51:06'using' loses exceptions
- 55:20Finally blocks fail
related talks
01h 02mBasics Designs and How We Got Them Wrong
33mGet the core right and the resilient code will follow
06mLightning Talk: The Most Important Design Guideline
32mTimeless Design Principles
28mThe Timeless Way of Building
40m“Where We Can Go”
01h 28mWhat Do You Mean?
51mSystems are communication structures -
