A Philosophy of Software Design

Contents

Author: John Ousterholt
Publisher: Yaknyam Press
ISBN: 978-1-7321022-0-0

Chapter 1: Introduction (It's All About Complexity)

How To Use This Book

Chapter 2: The Nature of Complexity

Complexity Defined

Symptoms of Complexity

Causes of Complexity

Complexity is Incremental

Conclusion

Chapter 3: Working Code Isn't Enough (Strategic vs. Tactical Programming)

Tactical Programming

Strategic Programming

How Much To Invest

Startups and Investment

Conclusion

Chapter 4: Modules Should Be Deep

Modular Design

What's An Interface

Abstractions

Deep Modules

Shallow Modules

Classitis

Example: Java and Unix I/O

Conclusion

Chapter 5: Information Hiding and Leakage

Information Hiding

Information Leakage

Temporal Decomposition

Example: HTTP Server

Example: Too Many Classes

Example: HTTP parameter handling

Example: Defaults in HTTP Responses

Information Hiding Within A Class

Taking it too far

Conclusion