ConstructiCat Logo
CodeBust.
Browse section ▾

Encapsular Campo.

Problem

Tienes un campo público.

Solution

Haz que el campo sea privado y crea métodos de acceso para él.

##Example

Before
class Person {
  public String name;
}
After
class Person {
  private String name;

  public String getName() {
    return name;
  }
  public void setName(String arg) {
    name = arg;
  }
}

##Why Refactor

Uno de los pilares de la programación orientada a objetos es la Encapsulación, la capacidad de ocultar los datos de un objeto. De lo contrario, todos los objetos serían públicos y otros objetos podrían obtener y modificar los datos de tu objeto sin ningún tipo de control. Los datos quedan separados de los comportamientos asociados a ellos, se compromete la modularidad de las secciones del programa y el mantenimiento se complica.

##Benefits

  • Si los datos y el comportamiento de un componente están estrechamente interrelacionados y se encuentran en el mismo lugar del código, te resultará mucho más fácil mantener y desarrollar ese componente.

  • También puedes realizar operaciones complejas relacionadas con el acceso a los campos del objeto.

##How to Refactor

  1. Crea un getter y un setter para el campo.

  2. Encuentra todas las invocaciones del campo. Sustituye la obtención del valor del campo por el getter, y sustituye la asignación de nuevos valores al campo por el setter.

  3. Una vez que se hayan sustituido todas las invocaciones del campo, haz que el campo sea privado.

Siguientes pasos

Encapsular Campo es solo el primer paso para acercar los datos y los comportamientos que los involucran. Después de crear métodos sencillos para acceder a los campos, deberías revisar los lugares donde se llama a estos métodos. Es muy posible que el código de esas zonas quedaría más apropiado dentro de los métodos de acceso.