Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases now! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Understanding Software

You're reading from   Understanding Software Max Kanat-Alexander on simplicity, coding, and how to suck less as a programmer

Arrow left icon
Product type Paperback
Published in Sep 2017
Publisher Packt
ISBN-13 9781788628815
Length 278 pages
Edition 1st Edition
Arrow right icon
Author (1):
Arrow left icon
Max Kanat-Alexander Max Kanat-Alexander
Author Profile Icon Max Kanat-Alexander
Max Kanat-Alexander
Arrow right icon
View More author details
Toc

Table of Contents (15) Chapters Close

1. Table of Contents FREE CHAPTER
2. Understanding Software
3. Credits
4. About the Author
5. www.PacktPub.com
6. Customer Feedback
7. Foreword
8. One. Principles for Programmers 9. Two. Software Complexity and its Causes 10. Three. Simplicity and Software Design 11. Four. Debugging 12. Five. Engineering in Teams 13. Six. Understanding Software 14. Seven. Suck Less 15. Index

Chapter 12. Two is Too Many

There is a key rule that I personally operate by when I'm doing incremental development and design, which I call "two is too many."

This rule is how I implement the "be only as generic as you need to be" rule from Code Simplicity.

Essentially, I know how generic my code needs to be, by noticing that I'm tempted to cut and paste some code, and then instead of cutting and pasting it, designing a generic solution that meets just those two specific needs.

I do this as soon as I'm tempted to have two implementations of something. For example, let's say I was designing an audio decoder, and at first I only supported WAV files. Then I wanted to add an MP3 parser to the code. There would definitely be common parts to the WAV and MP3 parsing code, and instead of copying and pasting any of it, I would immediately make a superclass or utility library that did only what I needed for those two implementations.

The key aspect of...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime