HOW TO NAME THINGS
Aaron Wang
- It's one of the most important things if you want your code to be readable by others
- Often times, the inability to come up with a name may be a hint to something wrong with your design. Does your method have too many responsibilities? Does your class encapsulate a coherent idea?
Good Names Are
- descriptive
- clear
- consistent
Bad Names Are
- casual
- obscure
- contradictory
Take it seriously
Don't be rash
Guidelines
-
Be consistent, discuss or follow, especially for business domain concepts, don't reinvent by yourself
- When in doubt, double-check
- Follow language specific general conventions, when use a new language, always learn its style guide first
- Be specific as much as possible
- bad: processData(), what data? what kind of process?
- good: formatAlertMessages()
- Be descriptive as much as possible, a long name isn't really an issue for modern programming languages, and code is read much more often than it's written
- CreatePushNotificationChannelForApplicationAsync
-
Be concise as much as possible, this goes hand by hand with the previous one
- bad: Message.getMessageList()
- good: Message.getList(), obviously it's list of message
- Look at the context, is it obvious or too verbose in this context?
- member.number
- member.memberCardNumber
- member.cardNumber
-
Avoid abbreviations, if you have to, document it, and stick to it
- CreatePushNotiChanForAppAsync
-
Avoid confusion, make meaningful difference
- bad: employeeInfo, employeeData
- good: employeeContact, employeePayment
- Avoid magic number
- const scheduleDate = date.subtract(5, 'hour')
- For booleans
- positive is better than negative
- isEnabled, shouldAutoUpdate, canAddUser
- Use plural and singular properly
- bad: for dev in device, for device in deviceList
- good: for device in devices
- Use tense properly
- bad: pushMessagesCount
- good: pushedMessagesCount
- Spell it right, look up in the dictionary if you're not sure
- data is the plural form of datum, don't use datas
- Use verb + noun form for functions/methods
- Use [adj + ]noun form for classes
Common Bad Names
- str1
- tmpData
- for personItem in personArr
- isEnable
- imgW
- mods
- sendAt
- doLaunch()
- registUnique()
- lunch()
- formateMsg()
- enQueue()
- dbOpen()
Golden Rules
- Consistency, Consistency, Consistency
-
Spend time to think
- Otherwise you're probably picking bad names
- Don't be afraid to rename
- I often find my first choice is inappropriate
Improve Tips
- Read open source code
- There are a bunch of names conventionally used by world wide developers, you better to know them and use them
- Keep practice your English skills
- Vocabulary
-
Syntax, good code reads like an article
-
How to Name Things
By Aaron Wang
How to Name Things
- 3,481