Your 💾 Database Of The Best And Worst Gifts For Every Occasion
BooksMen's Booksnaming things the hardest problem in software engineering
Naming Things: The Hardest Problem in Software Engineering
Product image 1

Naming Things: The Hardest Problem in Software Engineering

headshot of Franklin the Robot
Franklin’s Analysis of All User Reviews:
info circle icon
> Exclusively loved, a gem among the elite

Naming is one of the most difficult and enduring challenges in software engineering, but few of us do it well. This practical and comprehensive book provides a set of principles, rules, and application guidelines for efficiently choosing good names in your code.. These skills can be used throughout your career, and they’re useful for every programming language, technical domain, and experience level. The book incorporates real-world examples to illustrate how to choose good names and avoid bad names.. This book includes:Rules for how to choose good names and avoid bad namesPrinciples to help you remember the general qualities of good namesReal-world examplesGuidelines on the application of these rules and principles, including balancing tradeoffs, renaming best practices, and choosing domain-specific namesTips on how to develop your naming skills throughout your careerChanges in the second edition:Improved concisenessRemoval of less important contentGrammatical improvementsFormatting improvements

> theGiftDB score:
info circle icon
58 Reviews
> theGiftDB affiliates:
info circle icon
info circle icon
4out of 5

> theGiftDB user score:
headshot of Franklin the RobotBEEP! BOOP!
>> No User Submitted Scores For This Product Yet!

Variants: Kindle, Paperback

Weight: 5.3 ounces

variant: Paperback

theGiftDB score for this product was calculated from:

Only Amazon Reviews

note: we are actively working to add additional product affiliates and their reviews to improve this score

Product Review Details

4out of 5

58 reviews

5 Star
4 Star
3 Star
2 Star
1 Star

Amazon's Top Reviews

This book takes on one of the hardest challenges in writing software, naming things, and done beautifully with respective resources.
February 10, 2023
5out of 5
I found this book pretty useful. The rules were thorough, but easy to follow and the examples were for problems I see all the time. There were some sections outside of the principles/rules that don’t seem as useful to me right now, but I can see myself reading them again later when I want to think about different naming topics. Overall, very pragmatic!
October 15, 2023
4out of 5
The book is good, interesting, I think the first one that really gives the deserved attention for how important is naming in software engineering. I wish the book was longer, it’s really short, and with more real world examples. It feels like the writer was in a hurry to publish the book. Anyway nice initiative
2out of 5
I had high hopes that this would contain practical best practices for naming. However this "book" that is not much thicker than a pamphlet where 15 of the 97 pages are preamble has very little useful information, and almost all of it is only applicable in limited situations.
This thin book, if read by software engineers, and taken to heart, would improve code quality everywhere. Just naming things properly is an incredible way to write correct code in the first place, or improve it when you find problems. And it really is the hardest problem in software engineering - it's so hard to even name things at all that coders will do things they know are wrong to avoid it: long long methods with all code inline, class names that are just some noun with "Manager" or "Factory" or "Processor" or "Action" tacked on to the end as if that was sufficient to let you know what was going on, throwaway names that don't describe the entity named, not changing test names to reflect changes in the test (many times the test name doesn't even accurately state what the test is testing!), etc. etc. Yet I have found over and over that naming things properly - and breaking things out and giving them a name - contributes significantly to correctness. The most obvious way is that a correct name breaks the connection between one section of code and another section - especially if that other section would be embedded in the first one if you didn't break it out to give it a name. * You start with the named thing: you read the name, understand what it is supposed to do, then you read the code there, locally, and decide if it does what the name says it does. * Now you go back to where the name is used - you know the name accurately describes what's going to happen so you can consider it's use right there without referring again to the code behind it. Another way proper naming works well is if you name things in such a way that uses of the name in conditionals makes everything simpler. * This is why in code reviews I constantly point out that expressions used in conditionals should be: * Broken out into a named predicate (even if only a local Predicate - maybe especially then) * And that the predicate name should be positive * Because IMO it leads to much easier to understand boolean-valued expressions In 30 short pages this book lists the rules you need to follow to name things properly. And you've probably heard each on of rules principles before, one at a time. The value of the book is that these rules are organized into 4 principles and explained together in a way that it all hangs together, and then the principles - and many of the rules - stick in you mind, where you can have them ready when you need to name something. There's another 30 pages on how to apply the principles/rules in various settings. $10 on Kindle and well worth it. Even pay the extra $5 and get it in paperback - it's small and thin and very easy to flip through to refresh your understanding with.
I like the message and the general lessons and rules are well presented. The trouble is that they are presented over and over and over again. It's almost like this should have been a blog post rather than trying to pad it out into book length. I quit reading it about 75% of the way through, I couldn't take it anymore. I get it.
5out of 5
It's odd that a book on this topic hasn't been written before, and I'm glad it now has. This slim volume contains a wealth of good practical advice and wisdom gained through experience. There’s something to be gained for programmers at every level–it’s tempting to say it’s most beneficial to developers early in their career, but I’ve struggled through codebases written and maintained by experienced teams that were less readable than they should have been due to unfriendly naming choices. My personal challenge: slipping jokes or pop culture references into code. But as the book rightly points out, a clear identifier is “even more timeless” than name-dropping Metallica albums. When I first skimmed the table of contents I thought it might benefit from a chapter on cloud computing and naming in the context of Infrastructure as Code, but the concepts are sufficiently general as to cover that. It can be a little repetitive about the most important points it makes, but the specifics in each chapter are unique, and it’s a relatively light time commitment, so well worth the effort. I’ll be including a copy in our onboarding package for newly hired engineers.
5out of 5
There are plenty of great nuggets of wisdom in this book. While some guidance is inherent, it solidifies many ideas that should be common knowledge (but definitely aren’t). Well worth the time and money to read. I’d highly recommend this book.