liveBook · Manning

What you will learn in The Art of Code

The surprising power of beauty in software development

by Sandrine Banas

Chapter by chapter

Chapter 1: The aesthetics of code

1.1 The patterns of beautiful code · 1.1.1 Storytelling · 1.1.2 Simplicity · 1.1.3 Clarity of intent · 1.1.4 Expressiveness · 1.1.5 Purity · 1.1.6 Sustainability · 1.1.7 Durability · 1.1.8 Creativity · 1.2 A simple example of beautiful code · 1.2.1 Modeling absence · 1.2.2 From absence to beauty · 1.3 Summary

What you learn in chapter 1 →

Chapter 2: Narrative code

2.1 The plot · 2.1.1 The delivering · 2.1.2 The cleaning · 2.1.3 The defense · 2.1.4 The archiving · 2.1.5 The transformation · 2.2 Code typography · 2.3 High-level storytelling · 2.3.1 Working with legacy code · 2.3.2 Understanding the story · 2.3.3 Simplifying the story · 2.3.4 Levels of narrative: Action, scene, chapter, and table of contents · 2.3.5 Choosing where to break the story · 2.4 The characters · 2.5 The ending · 2.6 Summary

What you learn in chapter 2 →

Chapter 3: The complex art of simplicity

3.1 Complexity · 3.1.1 Code complexity · 3.1.2 Measuring cognitive complexity · 3.2 Simplicity · 3.2.1 The Prevent lever · 3.2.2 The Organize lever · 3.2.3 The Reduce lever · 3.2.4 The Hide lever · 3.2.5 The Investigate lever · 3.2.6 The Endure lever · 3.3 Summary

What you learn in chapter 3 →

Chapter 4: Expressing clarity of intent through elegant data modeling

4.1 The pain of working with data in traditional object-oriented languages · 4.1.1 The risk of mutable data · 4.1.2 Understanding the burden of encapsulation · 4.2 Data-oriented approach · 4.2.1 Beauty in record time · 4.2.2 Practical uses for small data carriers · 4.3 Elegant data modeling principles · 4.4 Summary

What you learn in chapter 4 →

Chapter 5: Expressiveness

5.1 Understanding expressiveness · 5.1.1 Traditional switch in Java · 5.1.2 Java’s enhanced switch · 5.1.3 Kotlin if/else · 5.1.4 Kotlin when with a sealed hierarchy · 5.1.5 Haskell pattern matching and direct domain modeling · 5.2 The limits of expressiveness · 5.3 Summary

What you learn in chapter 5 →

Chapter 6: Embracing purity with functional programming

6.1 Programming paradigms · 6.1.1 Imperative programming · 6.1.2 Functional programming · 6.2 Functions · 6.2.1 Lambda expressions · 6.2.2 Composition · 6.3 Pipelines · 6.3.1 Understanding functional pipelines · 6.3.2 Exception handling, or not · 6.3.3 Ugly pipelines · 6.3.4 Immutability in pipelines · 6.4 Final match, imperative vs. declarative · 6.5 Summary

What you learn in chapter 6 →

Chapter 7: Handling failure with grace

7.1 Categorizing failure · 7.1.1 Business logic errors · 7.1.2 Technical problems · 7.1.3 Programming errors · 7.1.4 Fatal errors · 7.2 Antipatterns in failure handling · 7.2.1 Failing to defend the entry points · 7.2.2 Lazy catch · 7.2.3 Logging gone wrong · 7.2.4 Flawed error handling · 7.3 Summary

What you learn in chapter 7 →

Chapter 8: Sustainability

8.1 The three pillars of sustainability · 8.2 The environmental impact of digital technology · 8.2.1 The carbon cost of electricity · 8.2.2 The hidden lifecycle cost of digital devices · 8.3 The craft of green software · 8.4 Green design patterns · 8.4.1 Frugality pattern · 8.4.2 Lean packaging pattern · 8.4.3 Lean storage pattern · 8.4.4 Lean communication pattern · 8.4.5 Efficient execution pattern · 8.4.6 Memory efficiency pattern · 8.4.7 Carbon-aware pattern · 8.5 Tools · 8.5.1 Estimating carbon footprint · 8.5.2 Tools for developers · 8.6 Summary

What you learn in chapter 8 →

Chapter 9: Durability in software design

9.1 Designing for change · 9.1.1 The balance between cohesion and coupling · 9.1.2 SOLID · 9.1.3 Design patterns · 9.2 Resilience · 9.3 Testing and the discipline of doubt · 9.4 Designing for trust · 9.4.1 Designing stable contracts · 9.4.2 Evolving without breaking trust · 9.5 Summary

What you learn in chapter 9 →

Chapter 10: Creativity in code and problem-solving

10.1 Creativity in programming · 10.1.1 Coding, but not all of it · 10.1.2 Problem-solving · 10.1.3 Creative foresight · 10.2 Creative thinking in coding · 10.2.1 Exercise: Practicing creativity through constraints · 10.2.2 Solutions · 10.3 The creative problem-solving methodology · 10.3.1 Knowledge · 10.3.2 Clarifying · 10.3.3 The creative problem-solving loop · 10.3.4 Implement and reflect · 10.4 Summary

What you learn in chapter 10 →

Concepts explained in this book

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.