---
title: Use Noun Phrases for Class Names
impact: MEDIUM-HIGH
impactDescription: eliminates 80%+ of "what does this class do" questions
tags: name, class, noun, identity
---

## Use Noun Phrases for Class Names

Class names should be nouns or noun phrases. A class represents a thing or concept. Avoid verbs, manager-style names, and vague words.

**Incorrect (verbs, vague, or manager-style):**

```java
// Verb as class name
class ProcessPayment {}

// Vague manager names
class Manager {}
class Processor {}
class Data {}
class Info {}

// Unnecessary suffixes
class CustomerManager {}
class AccountProcessor {}
class PaymentHandler {}
```

**Correct (specific noun phrases):**

```java
// Clear nouns representing entities
class Payment {}
class PaymentGateway {}

// Specific, descriptive nouns
class Customer {}
class WikiPage {}
class Account {}
class AddressParser {}

// Role-specific names when needed
class PaymentValidator {}    // Validates payments
class AccountRepository {}   // Stores accounts
```

**When NOT to use this pattern:**

Manager-style names are acceptable when the class genuinely manages a resource lifecycle:
- `ConnectionPool` - manages connection lifecycle
- `ThreadPoolExecutor` - manages thread lifecycle

Reference: [Clean Code, Chapter 2: Meaningful Names](https://www.oreilly.com/library/view/clean-code-a/9780136083238/)
