# enforce a maximum number of classes per file (max-classes-per-file) Files containing multiple classes can often result in a less navigable and poorly structured codebase. Best practice is to keep each file limited to a single responsibility. ## Rule Details This rule enforces that each file may contain only a particular number of classes and no more. Examples of **incorrect** code for this rule: ```js /*eslint max-classes-per-file: "error"*/ class Foo {} class Bar {} ``` Examples of **correct** code for this rule: ```js /*eslint max-classes-per-file: "error"*/ class Foo {} ``` ## Options This rule may be configured with either an object or a number. If the option is an object, it may contain one or both of: - `ignoreExpressions`: a boolean option (defaulted to `false`) to ignore class expressions. - `max`: a numeric option (defaulted to 1) to specify the maximum number of classes. For example: ```json { "max-classes-per-file": ["error", 1] } ``` ```json { "max-classes-per-file": [ "error", { "ignoreExpressions": true, "max": 2 } ] } ``` Examples of **correct** code for this rule with the `max` option set to `2`: ```js /* eslint max-classes-per-file: ["error", 2] */ class Foo {} class Bar {} ``` Examples of **correct** code for this rule with the `ignoreExpressions` option set to `true`: ```js /* eslint max-classes-per-file: ["error", { ignoreExpressions: true }] */ class VisitorFactory { forDescriptor(descriptor) { return class { visit(node) { return `Visiting ${descriptor}.`; } }; } } ```