---
title: "Descendre le champ"
type: "refactoring-technique"
slug: "push-down-field"
url: "http://localhost:3000/fr/push-down-field.md"
category: "Dealing with Generalization"
description: "Problème : un champ n'est-il utilisé que dans quelques sous-classes ? Solution : déplacez le champ vers ces sous-classes."
---
# Descendre le champ

> Problème : un champ n'est-il utilisé que dans quelques sous-classes ? Solution : déplacez le champ vers ces sous-classes.

## Problem

Un champ n'est-il utilisé que dans quelques sous-classes ?

## Solution

Déplacez le champ vers ces sous-classes.

## Why Refactor

Bien qu'il ait été prévu d'utiliser un champ de manière universelle pour toutes les classes, en réalité le champ n'est utilisé que dans certaines sous-classes. Cette situation peut se produire lorsque des fonctionnalités prévues ne se concrétisent pas, par exemple.

Cela peut aussi se produire à la suite de l'extraction (ou de la suppression) d'une partie des fonctionnalités des hiérarchies de classes.

## Benefits

* Améliore la cohérence interne de la classe. Un champ se trouve là où il est réellement utilisé.
* Lorsque vous descendez le champ vers plusieurs sous-classes simultanément, vous pouvez faire évoluer les champs indépendamment les uns des autres. Cela crée certes une duplication de code, alors ne descendez les champs que lorsque vous avez réellement l'intention de les utiliser de différentes manières.

## How to Refactor

1. Déclarez un champ dans toutes les sous-classes nécessaires.
2. Supprimez le champ de la super-classe.
## Relations

**Helps you do**

- [Extraire une sous-classe](/fr/extract-subclass.md)

**Similar techniques**

- [Descendre la méthode](/fr/push-down-method.md)

**Opposite refactorings**

- [Remonter le champ](/fr/pull-up-field.md)

**Eliminates smells**

- [Refus d'héritage](/fr/smells/refused-bequest.md)

