text.skipToContent text.skipToNavigation
  1. Home
  2. Computer Science & IT
  3. Essential Skills for the Agile Developer: A Guide to Better Programming and Design

Essential Skills for the Agile Developer: A Guide to Better Programming and Design, 1st edition

  • Alan Shalloway
  • Scott Bain
  • Ken Pugh
  • Amir Kolsky

Published by Addison-Wesley Professional (August 19th 2011) - Copyright © 2012

1st edition

Chosen format
View all
Essential Skills for the Agile Developer: A Guide to Better Programming and Design

ISBN-13: 9780321543738

Includes: Paperback
Free delivery

What's included

  • Paperback

    You'll get a bound printed text.


Table of contents

Series Foreword xvii

Preface xxi

Acknowledgments xxiii

About the Authors xxv


Part I: The Core Trim Tabs 1


Chapter 1: Programming by Intention 3

Programming by Intention: A Demonstration 3

Advantages 6

Summary 18


Chapter 2: Separate Use from Construction 21

An Important Question to Ask 21

Perspectives 22

Timing Your Decisions 30

Overloading and C++ 31

Validating This for Yourself 32

Summary 33


Chapter 3: Define Tests Up Front 35

A Trim Tab: Testing and Testability 35

What Is Testing? 35

Testability and Code Quality 36

Case Study: Testability 37

A Reflection on Up-Front Testing 39

Summary 44


Chapter 4: Shalloway’s Law and Shalloway’s Principle 45

Types of Redundancy 46

Redefining Redundancy 46

Other Types of Redundancy 47

The Role of Design Patterns in Reducing Redundancy 48

Few Developers Spend a Lot of Time Fixing Bugs 48

Redundancy and Other Code Qualities 50

Summary 52


Chapter 5: Encapsulate That! 53

Unencapsulated Code: The Sabotage of the Global Variable 53

Encapsulation of Member Identity 54

Self-Encapsulating Members 56

Preventing Changes 58

The Difficulty of Encapsulating Reference Objects 59

Breaking Encapsulation with Get() 62

Encapsulation of Object Type 64

Encapsulation of Design 67

Encapsulation on All Levels 69

Practical Advice: Encapsulate Your Impediments 69

Summary 72


Chapter 6: Interface-Oriented Design 75

Design to Interfaces 75

Definition of Interface 75

Interface Contracts 76

Separating Perspectives 77

Mock Implementations of Interfaces 79

Keep Interfaces Simple 79

Avoids Premature Hierarchies 80

Interfaces and Abstract Classes 81

Dependency Inversion Principle 82

Polymorphism in General 83

Not for Every Class 84

Summary 84


Chapter 7: Acceptance Test—Driven Development (ATDD) 85

Two Flows for Development 85

Acceptance Tests 88

An Example Test 88

Implementing the Acceptance Tests 90

For teachers

All the material you need to teach your courses.

Discover teaching material