---
title: "Déplacer un champ"
type: "refactoring-technique"
slug: "move-field"
url: "http://localhost:3000/fr/move-field.md"
category: "Moving Features between Objects"
description: "Problème : un champ est davantage utilisé dans une autre classe que dans sa propre classe. Solution : créez un champ dans une nouvelle classe et redirigez vers lui tous les utilisateurs de l’ancien champ."
---
# Déplacer un champ

> Problème : un champ est davantage utilisé dans une autre classe que dans sa propre classe. Solution : créez un champ dans une nouvelle classe et redirigez vers lui tous les utilisateurs de l’ancien champ.

## Problem

Un champ est davantage utilisé dans une autre classe que dans sa propre classe.

## Solution

Créez un champ dans une nouvelle classe et redirigez vers lui tous les utilisateurs de l’ancien champ.

## Why Refactor

Souvent, les champs sont déplacés dans le cadre de la technique [Extraire une classe](/fr/extract-class). Décider dans quelle classe laisser le champ peut être difficile. Voici notre règle générale : **placez un champ au même endroit que les méthodes qui l’utilisent** (ou là où se trouve la plupart de ces méthodes).

Cette règle vous aidera dans d’autres cas où un champ se trouve tout simplement au mauvais endroit.

## How to Refactor

1. Si le champ est public, la refactorisation sera bien plus simple si vous rendez le champ privé et fournissez des méthodes d’accès publiques (pour cela, vous pouvez utiliser [Encapsuler un champ](/fr/encapsulate-field)).
2. Créez le même champ avec des méthodes d’accès dans la classe destinataire.
3. Décidez de la façon dont vous ferez référence à la classe destinataire. Vous disposez peut-être déjà d’un champ ou d’une méthode qui retourne l’objet approprié ; sinon, vous devrez écrire une nouvelle méthode ou un nouveau champ pour stocker l’objet de la classe destinataire.
4. Remplacez toutes les références à l’ancien champ par des appels appropriés aux méthodes de la classe destinataire. Si le champ n’est pas privé, occupez-vous-en dans la superclasse et les sous-classes.
5. Supprimez le champ dans la classe d’origine.
## Relations

**Helps you do**

- [Extraire une classe](/fr/extract-class.md)
- [Intégrer la classe](/fr/inline-class.md)

**Similar techniques**

- [Déplacer une méthode](/fr/move-method.md)

**Eliminates smells**

- [Chirurgie au fusil à pompe](/fr/smells/shotgun-surgery.md)
- [Hiérarchies d'héritage parallèles](/fr/smells/parallel-inheritance-hierarchies.md)
- [Intimité inappropriée](/fr/smells/inappropriate-intimacy.md)

