Synopses & Reviews
“Kent is a master at creating code that communicates well, is easy to understand, and is a pleasure to read. Every chapter of this book contains excellent explanations and insights into the smaller but important decisions we continuously have to make when creating quality code and classes.” – Erich Gamma, IBM Distinguished Engineer “Many teams have a master developer who makes a rapid stream of good decisions all day long. Their code is easy to understand, quick to modify, and feels safe and comfortable to work with. If you ask how they thought to write something the way they did, they always have a good reason. This book will help you become the master developer on your team. The breadth and depth of topics will engage veteran programmers, who will pick up new tricks and improve on old habits, while the clarity makes it accessible to even novice developers.” – Russ Rufer, Silicon Valley Patterns Group “Many people don't realize how readable code can be and how valuable that readability is. Kent has taught me so much, I'm glad this book gives everyone the chance to learn from him.” – Martin Fowler, chief scientist, ThoughtWorks “Code should be worth reading, not just by the compiler, but by humans. Kent Beck distilled his experience into a cohesive collection of implementation patterns. These nuggets of advice will make your code truly worth reading.” – Gregor Hohpe, author ofEnterprise Integration Patterns “In this book Kent Beck shows how writing clear and readable code follows from the application of simple principles. Implementation Patternswill help developers write intention revealing code that is both easy to understand and flexible towards future extensions. A must read for developers who are serious about their code.” – Sven Gorts “ Implementation Patternsbridges the gap between design and coding. Beck introduces a new way of thinking about programming by basing his discussion on values and principles.” – Diomidis Spinellis, author ofCode Reading andCode Quality Software Expert Kent Beck Presents a Catalog of Patterns Infinitely Useful for Everyday Programming Great code doesn't just function: it clearly and consistently communicates your intentions, allowing other programmers to understand your code, rely on it, and modify it with confidence. But great code doesn't just happen. It is the outcome of hundreds of small but critical decisions programmers make every single day. Now, legendary software innovator Kent Beck–known worldwide for creating Extreme Programming and pioneering software patterns and test-driven development–focuses on these critical decisions, unearthing powerful “implementation patterns” for writing programs that are simpler, clearer, better organized, and more cost effective. Beck collects 77 patterns for handling everyday programming tasks and writing more readable code. This new collection of patterns addresses many aspects of development, including class, state, behavior, method, collections, frameworks, and more. He uses diagrams, stories, examples, and essays to engage the reader as he illuminates the patterns. You'll find proven solutions for handling everything from naming variables to checking exceptions. This book covers The value of communicating through code and the philosophy behind patterns How and when to create classes, and how classes encode logic Best practices for storing and retrieving state Behavior: patterns for representing logic, including alternative paths Writing, naming, and decomposing methods Choosing and using collections Implementation pattern variations for use in building frameworks Implementation Patternswill help programmers at all experience levels, especially those who have benefited from software patterns or agile methods. It will also be an indispensable resource for development teams seeking to work together more efficiently and build more maintainable software. No other programming book will touch your day-to-day work more often.
Table of Contents
Ch. 1. Introduction -- Tour Guide -- And Now -- Ch. 2. Patterns -- Ch. 3. A Theory of Programming -- Values -- Communication -- Simplicity -- Flexibility -- Principles -- Local Consequences -- Minimize Repetition -- Logic and Data Together -- Symmetry -- Declarative Expression -- Rate of Change -- Ch. 4. Motivation -- Ch. 5. Class -- Class -- Simple Superclass Name -- Qualified Subclass Name -- Abstract Interface -- Interface -- Abstract Class -- Versioned Interface -- Value Object -- Specialization -- Subclass -- Implementor -- Inner Class -- Instance-Specific Behavior -- Conditional -- Delegation -- Pluggable Selector -- Anonymous Inner Class -- Library Class -- Ch. 6. State -- State -- Access -- Direct Access -- Indirect Access -- Common State -- Variable State -- Extrinsic State -- Variable -- Local Variable -- Field -- Parameter -- Collecting Parameter -- Optional Parameter -- Var Args -- Parameter Object -- Constant -- Role-Suggesting Name -- Declared Type -- Initialization -- Eager Initialization -- Lazy Initialization -- Ch. 7. Behavior -- Control Flow -- Main Flow -- Message -- Choosing Message -- Double Dispatch -- Decomposing (Sequencing) Message -- Reversing Message -- Inviting Message -- Explaining Message -- Exceptional Flow -- Guard Clause -- Exception -- Checked Exceptions -- Exception Propagation -- Ch. 8. Methods -- Composed Method -- Intention-Revealing Name -- Method Visibility -- Method Object -- Overridden Method -- Overloaded Method -- Method Return Type -- Method Comment -- Helper Method -- Debug Print Method -- Conversion -- Conversion Method -- Conversion Constructor -- Creation -- Complete Constructor -- Factory Method -- Internal Factory -- Collection Accessor Method -- Boolean Setting Method -- Query Method -- Equality Method -- Getting Method -- Setting Method -- Safe Copy -- Ch. 9. Collections -- Metaphors -- Issues -- Interfaces -- Array -- Iterable -- Collection -- List -- Set -- Sorted Set -- Map -- Implementations -- Collection -- List -- Set -- Map -- Collections -- Searching -- Sorting -- Unmodifiable Collections -- Single-Element Collections -- Empty Collections -- Extending Collections -- Ch. 10. Evolving Frameworks -- Changing Frameworks without Changing Applications -- Incompatible Upgrades -- Encouraging Compatible Change -- Library Class -- Objects -- App. A. Performance Measurement -- Example -- Api -- Implementation -- MethodTimer -- Canceling Overhead -- Tests -- Comparing Collections -- Comparing ArrayList and LinkedList -- Comparing Sets -- Comparing Maps -- General Programming -- Philosophy -- Java