Software Development Axioms, 2nd Edition
Software Development Axioms, 2nd Edition
Simple Rules for Higher Quality
About the Book
Welcome to the Second Edition of this book!
These axioms, when followed diligently,
- applies no matter what language/framework you are in,
- improves quality,
- becomes deploy-friendly,
- provides fewer and shorter troubleshooting events!
If you are a student of software, this is all the stuff they should be teaching you, but aren't!
I have been building large-scale systems for over 30 years, and ultimately, a small number of simple rules deliver higher quality implementations. The software I build runs factories in real time, and unhandled exceptions are not an option! Neither is constantly restarting applications; I have direct evidence that my apps run for literally months without shutting them down!
Using care up-front pays back handsomely with fewer and shorter troubleshooting events.
Face it: those who maintain and deploy systems (and their users) we "throw over the wall" don't have the time or inclination to deal with "mysterious" failures that leave logs filled with cryptic stack dumps, or worse yet, little or no trace at all.
It's in our power to put an end to their pain. Dig in, and Level Up!
About the Contributors
Artwork
Early Reviewer
Early Reviewer
Table of Contents
-
Preface
- Second Edition
- About the Cover
-
Software Development Axioms
- Terms of Endearment
- Axiom
- Dogma
- Habit
- Introducing the Axioms to a Codebase
- Be Lazy
- What’s Next?
- That One’s A “True”
- The Egg
- Closing Safely
- Rube Goldberg 3.0
- Unmanaged Code Considered Harmful
- No Wonder Software Works Like Shit!
- Are You Using Threads for Everything Yet?
- Service Container is the Best Thing Since Timesliced Bread
- Tales From The Factory
- Using Annotations in an IoC Protocol
- Code Without Tests is Like a Life Without Sunshine
- Don’t Float Away
- A Journey into the Depths of Hell, aka Interop
-
If I See Another
NullPointerException
I’m Gonna Yak! - PSA For Control Structures
- Protect Your Code From “Joey”
-
Axioms: Input Validation
- Trust No One
- Help Others
- Say Something Righteous!
- Special CLR Section
- Special Javascript Section
- Defense in Depth
- Summary
-
Axioms: Naming
- Length
- Renaming
-
Axioms: Guarantee of non-NULL
- Collections
- Object-oriented Programming
-
Axioms: Immutability and Deep Protection
- Instances
- Collections
- Collection Elements
-
Axioms: Caller Controls Context
- Technique
- Special .NET Section
-
Axioms: Error Propagation
- Grrrr, Fire Bad!!!
- Top-Level Contexts
- Don’t make Decisions for the Caller
- Don’t Strip Information
- Fucking and Punching
-
Axioms: Error Control
- Foreign Code
- Logging
- Special Java Section
- Special IDE Section
- Resources and Error Control
- Another IDE Epic Fail
- Reducing Burden
- Special Java Section
-
Don’t Catch
NullPointerException
- Visual Aid
-
Axioms: Intra-function Organization
- Formatting and Whitespace
- Documentation Comments
- Size
- Fail Fast
- Data Flow
- One Line, One Statement
-
Axioms: Handling Resources
- Using Resources
- Accepting Resources
- RAII Bye Bye
- File Names
- Other Resources
- Format Your Way out of a Paper Bag
-
Axioms: Lifecycle
- Lifecycle Start
- Lifecycle Stop
- Duals
-
Axioms: Taint
-
NULL
is Taint -
unsigned
is Taint -
IDisposable
/AutoCloseable
is Taint -
Special .NET Section:
async/await
is Taint
-
-
Axioms: Multi-threading
- Debugging
- Data flow
- Sharing
- Thread-safety
- Use Platform Tools
- The UI Thread
-
Axioms: Writing Tests
- Prototyping the Design
- Positive and Negative
- More Greek than Italian
- Three from Column A
- Tests are Code Too
-
Axioms: Troubleshooting
- Home Sweet Debugger
- Playing Away
- Home Again, Home Again, Jiggity-Jig
-
Special .NET Section:
TraceSwitch
-
Axioms: SQL
- Not String Processing
- Use Parameter Markers
- Use Configuration
-
Dynamic
WHERE
- Stored Procedures Suck at Dynamic SQL
- SQL Is Code Too!
- Don’t Rewrite History
-
Axioms: XML
- Use High-level Tooling
- Use Writer Tooling
- Use DOM Tooling
- Use XSL Transforms
- List of Axioms
-
Epilogue
- Second Edition Epilogue
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them