<!--
title: Prefer behavior-true names
domain: app-frameworks
topic: Naming Conventions
language: Markdown
source: colinhacks/zod
updated: 2023-06-02
url: https://awesomereviewers.com/reviewers/zod-prefer-behavior-true-names/
-->

Use naming that clearly communicates the real behavior/intent of the API and avoids misleading abbreviations or borrowed terms whose common meaning differs.

Apply this when adding/renaming methods:
- Match semantics to behavior: if the method “checks and returns input as-is,” don’t name it after an operation that “returns an array without duplicates.”
- Prefer full, intention-revealing names over short/ambiguous ones when they reduce clarity.
- If a common ecosystem term may imply different semantics, choose a name that reflects the actual operation (or explicitly document the difference).
- For domain terms that overlap with other systems (e.g., “forms”), ensure the wording/dox strings align with the library’s/TypeScript’s meaning to prevent confusion.

Example rule in practice:
- ❌ Confusing due to semantic mismatch: a method named like lodash `uniq` when it does not dedupe/transform.
- ✅ Clearer alternative: choose a name that reflects what happens (e.g., “unique/ distinct” only if the operation truly enforces/derives uniqueness as that name implies), or pick another verb that matches intent (as in the naming exploration for `.check`).
