Using camelCase for abbreviations
Issue #147
Each language and platform has its own coding style guide. This goes true when it comes to abbreviations. I’ve had some debates about whether to use JSON
or Json
, URL
or Url
, HTTP
or Http
.
I personally prefer camelCase, so I’m very happy to see that Kotlin is on my side. See Kotlin Style guide, I think this guide should be applied in other languages, such as Swift 😛
Sometimes there is more than one reasonable way to convert an English phrase into camel case, such as when acronyms or unusual constructs like “IPv6” or “iOS” are present. To improve predictability, use the following scheme.
Beginning with the prose form of the name:
- Convert the phrase to plain ASCII and remove any apostrophes. For example, “Müller’s algorithm” might become “Muellers algorithm”.
- Divide this result into words, splitting on spaces and any remaining punctuation (typically hyphens).
Recommended: if any word already has a conventional camel-case appearance in common usage, split this into its constituent parts (e.g., “AdWords” becomes “ad words”). Note that a word such as “iOS” is not really in camel case per se; it defies any convention, so this recommendation does not apply.
- Now lowercase everything (including acronyms), then uppercase only the first character of:
…each word, to yield pascal case, or
…each word except the first, to yield camel case
- Finally, join all the words into a single identifier.
Note that the casing of the original words is almost entirely disregarded.
Prose form | Correct | Incorrect |
---|---|---|
“XML Http Request” | XmlHttpRequest | XMLHTTPRequest |
“new customer ID” | newCustomerId | newCustomerID |
“inner stopwatch” | innerStopwatch | innerStopWatch |
“supports IPv6 on iOS” | supportsIpv6OnIos | supportsIPv6OnIOS |
“YouTube importer” | YouTubeImporterYoutubeImporter* |
About iOS
or IOS
, I think I would go with IOS
. I think React Native thinks so too
NavigatorIOS looks and feels just like UINavigationController, because it is actually built on top of it.