2 min read

The Art of Writing Code That Humans Can Read: Naming Conventions That Actually Work

Arguing that naming is the hardest problem in programming and providing concrete patterns for variables functions and classes
Street photograph by Stalin Pereira
Photo by Stalin Pereira

Your Code Is Speaking

But is anyone actually understanding it?

Reading Someone Else's Code

Ever felt like deciphering ancient hieroglyphics at work?

  • The Mystery — You open a file and see variables named 'x', 'temp', and 'data2'
  • The Frustration — Hours wasted trying to understand what the original author meant
  • The Cost — Studies show developers spend 70% of their time reading code, not writing it

Naming Is Actually Hard

It's not just you struggling with this problem

  • Famous Quote — There are only two hard things in CS: cache invalidation and naming things
  • Real Impact — Poor naming creates technical debt that compounds over time
  • Hidden Cost — Every unclear name is a future meeting to explain what it does

Variables Tell Stories

Transform cryptic letters into meaningful narratives

  • Bad Example — 'd' tells you nothing about what it holds
  • Better — 'days' hints at the content but lacks context
  • Best — 'daysSinceLastLogin' tells the complete story instantly

Functions Are Promises

Name them for what they deliver, not how

  • Action Words — Start with verbs: get, calculate, validate, send, create
  • Be Specific — 'processData' is vague; 'calculateMonthlyRevenue' is clear
  • One Job — If you need 'and' in the name, the function does too much

Classes Are Blueprints

They represent things in your business domain

  • Use Nouns — Classes are things: User, Invoice, ShoppingCart, PaymentProcessor
  • Avoid Suffixes — 'Manager', 'Handler', 'Helper' often hide unclear responsibilities
  • Domain Language — Use terms your business stakeholders actually say

Old Way vs New Way

See the transformation in real naming approaches

  • Old Way — Short cryptic names to save keystrokes and screen space
  • New Way — Descriptive names because IDEs autocomplete everything
  • Result — Code becomes self-documenting, comments become unnecessary

The Consistency Pattern

Predictable naming reduces mental overhead dramatically

  • Booleans — Prefix with is, has, can, should: isActive, hasPermission, canEdit
  • Collections — Use plurals: users, orderItems, activeSubscriptions
  • Constants — SCREAMING_CASE signals values that never change

Context Eliminates Redundancy

Let the surrounding code do the talking

  • Inside User Class — Use 'name' not 'userName' - context is already clear
  • In Loop — 'user' is fine when iterating over 'users' collection
  • Exceptions — Add context when scope is large or meaning is ambiguous

Business Impact Is Real

Good naming directly affects your bottom line

  • Faster Onboarding — New developers become productive in days, not weeks
  • Fewer Bugs — Clear intent means fewer misunderstandings in code changes
  • Lower Costs — Less time debugging means more time building features

Name It Like You'll

Forget it in six months

Because you will. Write code for the confused future developer who will maintain it. That developer is probably you.

What's the worst variable name you've ever encountered in a codebase? Drop it in the comments!