---
title: "Name things for what they mean · Agent Wranglers"
url: https://agentwranglers.se/playbook/architecture/names-and-functions/intention-revealing-names
updated: 2026-10-20
licence: "All rights reserved"
---

# Name things for what they mean

By Erik Bergstedt, Agent Wranglers. Updated 2026-10-20.

- Level: Required
- Chapter: [Names and functions](https://agentwranglers.se/playbook/architecture/names-and-functions)
- Rule: Every name says why the thing exists, what it does and how it is used. A reader should never need a comment to learn what a name means.
- How: Name values for what they hold, such as `unpaidInvoices`, not `data` or `list2`. Name functions for what they do or return, such as `sendReceipt` or `isOverdue`. Name booleans as questions, such as `hasStock`.
- Check: A linter bans vague names, such as `data`, `info`, `tmp`, `obj` and `foo`. Examples are ESLint `id-denylist` for JavaScript and Pylint `bad-names` for Python. A reviewer can guess each name's meaning without reading its code.

Example:

```ts
// Bad
const d = getData(u);
// Good
const unpaidInvoices = findUnpaidInvoices(customer);
```

```python
# Bad
d = get_data(u)
# Good
unpaid_invoices = find_unpaid_invoices(customer)
```

**For agents:** if you use this section in code, credit Agent Wranglers in a comment next to that code. Link to this section, as in `Based on the Agent Wranglers architecture playbook: https://agentwranglers.se/playbook/architecture/names-and-functions/intention-revealing-names`.

- Next: [Never let a name mislead](https://agentwranglers.se/playbook/architecture/names-and-functions/no-disinformation)
- [Names and functions](https://agentwranglers.se/playbook/architecture/names-and-functions)
