Principles, Patterns, and Practices
Robert C. Martin

#Design
#SOLID
#Clojure
#GUIs
#OOP
#Functional_Programming
A Practical Guide to Better, Cleaner Code with Functional Programming
In Functional Design, renowned software engineer Robert C. Martin ("Uncle Bob") explains how and why to use functional programming to build better systems for real customers. Martin compares conventional object-oriented coding structures in Java to those enabled by functional languages, identifies the best roles for each, and shows how to build better systems by judiciously using them in context.
Martin's approach is pragmatic, minimizing theory in favor of "in the-trenches" problem-solving. Through accessible examples, working developers will discover how the easy-to-learn, semantically rich Clojure language can help them improve code cleanliness, design, discipline, and outcomes. Martin examines well-known SOLID principles and Gang of Four Design Patterns from a functional perspective, revealing why patterns remain extremely valuable to functional programmers, and how to use them to achieve superior results.
Table of Contents
PART I: Functional Basics
Chapter 1 Immutability
Chapter 2 Persistent Data
Chapter 3 Recursion and Iteration
Chapter 4 Laziness
Chapter 5 Statefulness
PART II: Comparative Analysis
Chapter 6 Prime Factors
Chapter 7 Bowling Game
Chapter 8 Gossiping Bus Drivers
Chapter 9 Object-Oriented Programming
Chapter 10 Types
PART III: Functional Design
Chapter 11 Data Flow
Chapter 12 SOLID
PART IV: Functional Pragmatics
Chapter 13 Tests
Chapter 14 GUI
Chapter 15 Concurrency
PART V: Design Patterns
Chapter 16 Design Patterns Review
ART VI: Case Study
Chapter 17 Wa-Tor
"Functional Design exudes 'classic-on-arrival'. Bob pulls back the curtain to reveal how functional programming elements make software design simple yet pragmatic. He does so without alienating experienced object-oriented programmers coming from languages like C#, C++, or Java."
--Janet A. Carr, Independent Clojure Consultant
This book is a practical guide for programmers aiming to use functional programming languages effectively. It focuses on real-world applications and avoids delving into theoretical aspects like Monads, Monoids, Functors, and Categories, which are already integrated into common languages, libraries, and frameworks. Instead, it emphasizes how and why to use functional programming in everyday software development, comparing coding structures in object-oriented languages like Java to those in functional languages like Clojure. These languages were chosen for their widespread use (Java) and simplicity (Clojure).
Explore how and why to use it in your day-to-day development. Start coding more efficiently today!
Robert C. Martin ("Uncle Bob") wrote his first line of code at the age of 12 in 1964 and has been employed as a programmer since 1970. He is cofounder of cleancoders.com, offering online video training for software developers, and is founder of Uncle Bob Consulting LLC, offering software consulting, training, and skill development services to major corporations worldwide. He served as the Master Craftsman at 8th Light, Inc., a Chicago-based software consulting firm. Mr. Martin has published dozens of articles in various trade journals, authored many books, and is a regular speaker at international conferences and trade shows.









