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

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

## Problem

Методу не хватает данных для осуществления каких-то действий.

## Solution

Создайте новый параметр, чтобы передать эти данные.

## Why Refactor

Вам необходимо внести какие-то изменения в метод. Эти изменения требуют дополнительной информации или данных, которые ранее в метод не подавались.

## Benefits

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

## How to Refactor

1. Проверьте, не определён ли метод в суперклассе или подклассе. Если метод в них присутствует, нужно будет повторить все шаги также в этих классах.
2. Следующий шаг важен, чтобы сохранить работоспособность программы во время рефакторинга. Итак, создайте новый метод, скопировав старый, и добавьте в него требуемый параметр. Замените код старого метода вызовом нового метода. Вы можете подставить любое значение в новый параметр (например `null` для объектов или ноль для чисел).
3. Найдите все обращения к старому методу и замените их обращениями к новому методу.
4. Удалите старый метод. Этот шаг неосуществим, если старый метод является частью публичного интерфейса. В этом случае старый метод нужно пометить как устаревший (`deprecated`).
## Relations

**Helps you do**

- [Замена параметров объектом](/ru/introduce-parameter-object.md)

**Similar techniques**

- [Переименование метода](/ru/rename-method.md)

**Opposite refactorings**

- [Удаление параметра](/ru/remove-parameter.md)

