---
title: "Встраивание класса"
type: "refactoring-technique"
slug: "inline-class"
url: "http://localhost:3000/ru/inline-class.md"
category: "Перемещение функций между объектами"
description: "Проблема: Класс почти ничего не делает, ни за что не отвечает, и никакой ответственности для этого класса не планируется. Решение: Переместите все фичи из описанного класса в другой."
---
# Встраивание класса

> Проблема: Класс почти ничего не делает, ни за что не отвечает, и никакой ответственности для этого класса не планируется. Решение: Переместите все фичи из описанного класса в другой.

## Problem

Класс почти ничего не делает, ни за что не отвечает, и никакой ответственности для этого класса не планируется.

## Solution

Переместите все фичи из описанного класса в другой.

## Why Refactor

Часто этот рефакторинг оказывается следствием недавнего «переселения» части фич класса в другие, после чего от исходного класса мало что осталось.

## Benefits

* Меньше бесполезных классов — больше свободной оперативной памяти, в том числе, и у вас в голове.

## How to Refactor

1. Создайте в классе-приёмнике публичные поля и методы, которые есть в классе-доноре. Методы должны обращаться к аналогичным методам класса-донора.
2. Замените все обращения к классу-донору обращениями к полям и методам класса-приёмника.
3. Самое время протестировать программу и убедиться, что во время работы не было допущено никаких ошибок. Если тесты показали, что все работает так, как должно, начинаем использовать [перемещение метода](/ru/move-method) и [перемещение поля](/ru/move-field) для того, чтобы полностью переместить все функциональности в класс-приёмник из исходного класса. Продолжаем делать это, пока исходный класс не окажется совсем пустым.
4. Удалите исходный класс.
## Relations

**Opposite refactorings**

- [Извлечение класса](/ru/extract-class.md)

**Eliminates smells**

- [Стрельба дробью](/ru/smells/shotgun-surgery.md)
- [Ленивый класс](/ru/smells/lazy-class.md)
- [Теоретическая общность](/ru/smells/speculative-generality.md)

