onmyway133 / blog

🍁 What you don't know is what you haven't learned
https://onmyway133.com/
MIT License
679 stars 33 forks source link

Using camelCase for abbreviations #147

Open onmyway133 opened 6 years ago

onmyway133 commented 6 years ago

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:

  1. Convert the phrase to plain ASCII and remove any apostrophes. For example, “MĂŒller’s algorithm” might become “Muellers algorithm”.

  2. 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.

  1. 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

  1. 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.

Read more

nebiros commented 6 years ago

Id at java, ID at swift, objc and golang, golang linter also complains if you try Id