# God Object

> A defect in which one object accumulates unrelated responsibilities and becomes the default place for every change.

Record: `architecture:god-object`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: modularity, semantic_consistency, domain_boundary, control_coordination
Aliases: Blob Class
Canonical: https://banes-lab.com/ontology#architecture-god-object

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Big Ball of Mud](https://banes-lab.com/records/architecture/big-ball-of-mud.md) and before [Concrete Coupling](https://banes-lab.com/records/architecture/concrete-coupling.md).

## Repair

- Refactored by: extract_class, split_responsibilities, move_method, extract_domain_service, introduce_facade_only_if_boundary_needed
- Detected by: large_class, many_unrelated_methods, many_dependencies, high_fan_in, multiple_reasons_to_change
- Violated by: Centralize unrelated responsibilities into one object, route unrelated behavior through it, accumulate state and dependencies, and make the object the default modification point.
- Measured by: methods and dependencies per class, [fan-in](https://banes-lab.com/records/lexicon/fan-in.md), distinct reasons to change
- Enforced by: class size and responsibility limits in lint, [design review](https://banes-lab.com/records/architecture/design-review.md)

## Severity

- [discouraged](https://banes-lab.com/records/vocabulary/severity-discouraged.md)

## Category

- [Anti-patterns](https://banes-lab.com/records/architecture-category/anti-patterns.md)

## Force

- [Control coordination](https://banes-lab.com/records/force/control-coordination.md)
- [Domain boundary](https://banes-lab.com/records/force/domain-boundary.md)
- [Modularity](https://banes-lab.com/records/force/modularity.md)
- [Semantic consistency](https://banes-lab.com/records/force/semantic-consistency.md)

## Detected by

- [rules/eslint/file-length.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/file-length.eslint.rule.ts.md)

## Negated by

- [Single Responsibility Principle](https://banes-lab.com/records/architecture/single-responsibility.md)
- [High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md)

## Linked from

- [Worth before work](https://banes-lab.com/disciplined-methodology/plan/worth-before-work.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
