The Forgotten Art of Structured Programming - Kevlin Henney [C++ on Sea 2019]
cpponsea2 HN recommenders · recommended in 2 months, 2021–2022
talk · intermediate · evergreen · 2021–2022 on HN
Kevlin Henney revisits structured programming, from Go To Statement Considered Harmful to block-structured code and object orientation. He argues it still matters for how we write code today.
HN commenters point to it in discussions of goto, early returns and cognitive load when reading code.
Up next
2 mo on HNCppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”
CppCon
2 HN recommender · 2021–2025
3 mo on HNTwitter and Visual Studio Rant
Molly Rocket
3 HN recommender · 2020–2026
5 mo on HNArithmetic, Population and Energy - a talk by Al Bartlett
lXlSalemlXl
6 HN recommender · 2016–2023
4 mo on HNCppCon 2016: Nicholas Ormrod “The strange details of std::string at Facebook"
CppCon
4 HN recommender · 2018–2026
9 mo on HNLISA11 - Fork Yeah! The Rise and Development of illumos
USENIX
9 HN recommender · 2012–2026
3 mo on HNHow big is a visible photon?
Huygens Optics
3 HN recommender · 2021–2025
11 mo on HNCppCon 2015: Andrei Alexandrescu “std::allocator...”
CppCon
7 HN recommender · 2017–2025
6 mo on HNBOLTR: Juicero, Cold Press Juicer for Rich Weirdos
AvE
6 HN recommender · 2017–2026
15 mo on HNRailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
15 HN recommender · 2015–2025
14 mo on HN"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
14 HN recommender · 2022–2026
13 mo on HN"Making Impossible States Impossible" by Richard Feldman
elm-conf
9 HN recommender · 2017–2026
12 mo on HNHow To Design A Good API and Why it Matters
Google TechTalks
12 HN recommender · 2011–2025
3 comments from Hacker News
I get that, but the comment was specifically about pointers (not gotos or structure), and is interesting in general from a historical perspective. The "goto" keyword is similarly dangerous. I've seen very good arguments for leaving it out, and generally poor arguments for keeping it in a language. "I can use it safely" is not a good argument, because it's just like Jim Jefferies' standup routine linked above: "Why should I have my guns taken away from me?" An example of a good argument for structured programming is the talk "The Forgotten Art of Structured Programming - Kevlin Henney [C++ on Sea 2019]": ▶ this video Similarly, this article makes a very good argument that concurrent or async code is essentially the "goto spaghetti reinvented, but even worse ", and that Structured Concurrency is the solution: link
If you haven't seen it, Kevlin Henney's talk about "The Forgotten Art of Structured Programming"[1] is interesting (if somewhat long in the examples later), and somewhat related. It's not specifically about return early (and a case could be made that it should or should not apply specifically to early return), but it is about if, else, return, and how they affect cognitive load when reading code. 1: ▶ this video
For some of these reasons, I prefer to write this: if (condition) { throw } else { <rest of code> } Rather than: if (condition) { throw } <rest of code> The justification, which I found in this presentation ( ▶ this video ) is that if you only looked at the block structures, could you tell that the rest of the code might never run?