Clean Code: A Handbook of Agile Software CraftsmanshipEven bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship. Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer–but only if you work at it. What kind of work will you be doing? You’ll be reading code–lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft. Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code–of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code. Readers will come away from this book understanding
|
Contents
17 | |
Functions | 31 |
Comments | 53 |
Formatting | 75 |
Objects and Data Structures | 93 |
Error Handling | 103 |
Boundaries | 113 |
Unit Tests | 121 |
Concurrency | 177 |
Successive Refinement | 193 |
JUnit Internals | 251 |
Refactoring SerialDate | 267 |
Smells and Heuristics | 285 |
Concurrency II | 317 |
orgjfreedateSerialDate | 349 |
Cross References of Heuristics | 409 |
Other editions - View all
Common terms and phrases
abstract class Agile Software Development algorithm APRIL Args Args.java argument ArgumentMarshaler AspectJ assertEquals BooleanArgumentMarshaler booleanValue catch ArgsException char argChar clean code ComparisonCompactor concurrent create currentArgument day-of-the-week DayOfMonth duplication elementTail enum error errorArgumentId errorCode errorParameter example final String FitNesse function getNearest DayOfWeek HashMap<Character IllegalArgumentException implementation import instanceof integer IntegerArgumentMarshaler interface Java Javadoc JUnit Kent Beck Law of Demeter level of abstraction lines Listing marshalers.put(elementId MetaObject method module month monthCodeToString null object package param parameter parse parseArguments private boolean private int private Map<Character private static private String private void problem production code public abstract public boolean public class public int public static final public String public void refactored return true SerialDate Single Responsibility Principle socket static final int StringArgumentMarshaler stringToWeekdayCode stringValue suffixLength Test-Driven Development things threaded code threads throw new ArgsException throws ArgsException throws Exception unit tests variables write