Names should always indicate role.
Problems
Declarative
Design for Change
Coupling to accidental implementation
Solutions
- Rename your variable according to the role.
Sample Code
Wrong
Right
Detection
This is a semantic rule. We can instruct our linters to warn us from using names related to existing classes, types o reserved words since they are too implementative.
Tags
- Declarative
Conclusion
The first name we can across is related to an accidental point of view. It takes time to build a theory on the models we are building using our MAPPERS. Once we get there, we must rename our variables-
Relations
More info
What exactly is a name? — Part I: The Quest
Maxi Contieri ・ Feb 9 '21
Credits
Photo by Sangga Rima Roman Selia on Unsplash
This idea came from this tweet
Types are essentially assertions about a program. And I think it’s valuable to have things be as absolutely simple as possible, including not even saying what the types are.
Dan Ingalls
Top comments (1)
Well, I mean...
regex
is the type. I get that this code won't confuse anyone, but it's as type-named asstring
orbytes
ornum
and as uninformative asdata
orobject
.the above is probably ideal in terms of readability, but if you have to for example hoist the
Regex
in a particular language to avoid recompilation, would this be a close second?Some will say yes, because "it's good to declare things that do one job, and will be replaced rather than modified".
But personally, I'd end up with
Yes, it has a type in its name. But in a wider scope like that it might be a boon and not a sin, as that still reflects its "role" in the code, and is not an implementation detail of how the role is accomplished. You could replace that with "Pattern" but I think that's purely harmful.
And of course I renamed the function.