97 Things Every Programmer Should Know
Every Programmer Should Know
Collective Wisdom from the Experts
Edited by Kevlin Henney
Beijing · Cambridge · Farnham · Köln · Sebastopol · Taipei · Tokyo
97 Things Every Programmer Should Know
Edited by Kevlin Henney
Copyright © 2010 Kevlin Henney. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc. 1005 GravensteinHighway North, Sebastopol CA 95472
O’Reilly books may be purchased for educational, business, or sales promotional use. Online
editions are also available for most titles (http://my.safaribooksonline.com). For more information,
contact our corporate/institutional sales department: (800) 998-9938 or corporate@oreilly.com.
Editor: Mike Loukides
Series Editor: Richard Monson-Haefel
ProductionEditor: Rachel Monaghan
Proofreader: Rachel Monaghan
Compositor: Ron Bilodeau
Indexer: Julie Hawks
Interior Designer: Ron Bilodeau
Cover Designers: Mark Paglietti and
Susan Thompson
Print History:
February 2010:
First Edition.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. 97 Things Every Programmer
Should Know and related trade dress are trademarks of O’ReillyMedia, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are
clarified as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc.
was aware of a trademark claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher and authorsassume no responsibility for errors and omissions, or for damages resulting from the use
of the information contained herein.
This book uses Repkover,™ a durable and flexible lay-flat binding.
ISBN: 978-0-596-80948-5
[SB]
To absent friends
Contents
Contributions by Category . . . . . . . . . . . . . . . . . . . . .
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .
xv
xxiii
Act with Prudence . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Seb Rose
Apply Functional Programming Principles . . . . . . . . . . . . 4
Edward Garson
Ask, “What Would the User Do?” (You Are Not the User) . . 6
Giles Colborne
Automate Your Coding Standard . . . . . . . . . . . . . . . . . . 8
Filip van Laenen
Beauty Is in Simplicity . . . . . . . . . . . . .. . . . . . . . . . .
10
Jørn Ølmheim
Before You Refactor . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Rajith Attapattu
Beware the Share . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Udi Dahan
v
The Boy Scout Rule . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Robert C. Martin (Uncle Bob)
Check Your Code First Before Looking to Blame Others . . .18
Allan Kelly
Choose Your Tools with Care . . . . . . . . . . . . . . . . . . . 20
Giovanni Asproni
Code in the Language of the Domain . . . . . . . . . . . . . .
22
Dan North
Code Is Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Ryan Brush
Code Layout Matters . . . . . . . . . . . . . . . . . . . . . . . . .
26
Steve Freeman
Code Reviews . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
28
Mattias Karlsson
Coding with Reason . . . . . . . . . . . . . . . . . . . . . . . . . 30
Yechiel Kimchi
A Comment on Comments . . . . . . . . . . . . . . . . . . . . .
32
Cal Evans
Comment Only What the Code Cannot Say . . . . . . . . . .
34
Kevlin Henney
Continuous Learning . . . . . . . . . . . . . . . . . . . . . . . . .36
Clint Shank
Convenience Is Not an -ility . . . . . . . . . . . . . . . . . . . .
38
Gregor Hohpe
vi
Contents
Deploy Early and Often . . . . . . . . . . . . . . . . . . . . . . . 40
Steve Berczuk
Distinguish Business Exceptions from Technical . . . . . . .
42
Dan Bergh Johnsson
Do Lots of Deliberate Practice. . . . . . . . . . . . . . . . . . . 44
Jon Jagger...
Regístrate para leer el documento completo.