---
title: "Сокрытие метода"
type: "refactoring-technique"
slug: "hide-method"
url: "http://localhost:3000/ru/hide-method.md"
category: "Упрощение вызовов методов"
description: "Проблема: Метод не используется другими классами либо используется только внутри своей иерархии классов. Решение: Сделайте метод приватным или защищённым."
---
# Сокрытие метода

> Проблема: Метод не используется другими классами либо используется только внутри своей иерархии классов. Решение: Сделайте метод приватным или защищённым.

## Problem

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

## Solution

Сделайте метод приватным или защищённым.

## Why Refactor

Очень часто потребность в сокрытии методов получения и установки значений возникает в связи с разработкой более богатого интерфейса, предоставляющего дополнительное поведение. Особенно это проявляется в случае, когда вы начинали с класса в котором не было никаких методов, кроме геттеров и сеттеров.

По мере встраивания в класс нового поведения может обнаружиться, что в открытых геттерах и сеттерах более нет надобности, и тогда можно их скрыть. А после этого, если использовать только прямой доступ к полю, его методы доступа можно вообще удалить.

## Benefits

* Сокрытие методов упрощает эволюционные изменения в вашем коде. Изменяя приватный метод, вам нужно будет заботиться только о том, чтобы не сломать текущий класс, так как этот метод не может быть использован где-то ещё.
* Делая методы приватными, вы подчёркиваете важность публичного интерфейса класса, другими словами, тех методов, которые остались публичными.

## How to Refactor

1. Регулярно делайте попытки найти методы, которые можно сделать приватными. Статический анализ кода и хорошее покрытие unit-тестами может очень помочь в этом.
2. Делайте каждый метод настолько приватным, насколько это возможно.
## Relations

**Eliminates smells**

- [Класс данных](/ru/smells/data-class.md)

