Was looking through some code today, and found something that highlights my biggest struggles in programming, it’s compound words and casing. Had identifiers such as…
strikeThroughOffset
whitespaceWidth
lineSpacing
underlineOffset
outlineThickness
I can keep in mind “strike through off set”, but then I struggle to remember, is it strikethrough or strikeThrough? What about Offset or OffSet? Why are offset, underline, and outline, all one word, but strikeThrough isn’t? I think of it as one compound word, many people apparently do, but I guess someone who wrote this code doesn’t.
Or… is this just a me problem? Does anyone else struggle with this sort of thing? Am I missing something or should I “just get good”? My best solution so far is just keep everything always lowercase, personally I find that more readable and memorable, but that’s a lot to ask of literally every other programmer in the world…
I’d take the approach of “flattening” compound words and joining them with the preferred style for the given language. Take your first one, for example:
strike-through off-set -> strikethrough offset
Python (snake_case): strikethrough_offset
Go (camelCase): strikethroughOffset
Rust type (UpperCamelCase): StrikethroughOffset … etc
I totally agree with what you’re saying. Also, I think UpperCamelCase is called Pascal case.
I have issues with acronyms. For example, SMS: Is it
activateSms
oractivateSMS
? What aboutsmsPermission
vssMSPermission
?My rule of thumbs is if its more than three characters capitalize only the first letter. So, given your example I would write activateSms and smsPermission.
The key is consistency.