Choose names that clearly communicate purpose and reduce cognitive load for future readers. Avoid generic, abbreviated, or ambiguous identifiers in favor of self-documenting ones.

Key principles:

Example:

# Avoid: Generic parameter name that doesn't indicate flexibility
def reset_bumped_at(post_id = nil)
  post = post_id.is_a?(Post) ? post_id : Post.find(post_id)
end

# Prefer: Clear parameter name indicating it accepts both types
def reset_bumped_at(post_or_post_id = nil)
  post = post_or_post_id.is_a?(Post) ? post_or_post_id : Post.find(post_or_post_id)
end

The goal is to write code that reads like well-written prose, where the intent is immediately clear without requiring additional mental parsing or context switching.