Clean code capítulo 10

14
Clean Code, Capítulo 10: Clases. Esteban Vallejo Morales

Transcript of Clean code capítulo 10

Page 1: Clean code capítulo 10

Clean Code, Capítulo 10:

Clases.

Esteban Vallejo Morales

Page 2: Clean code capítulo 10

Agenda

• Organización de clases• Encapsulación• Las clases deben ser de tamaño reducido• El principio de responsabilidad única• Cohesión• Mantener resultados consistentes• Organizar los cambios

Page 3: Clean code capítulo 10

Organización de clases

Según la convención estándar de Java, una clase:• Comienza con una lista de variables.• Primero, constantes estáticas públicas.• Segundo, variables estáticas privadas.• Tercero, variables de instancia privadas.• Las funciones públicas deben seguir a la lista de variables.

Page 4: Clean code capítulo 10

Encapsulamiento

• Si una regla del mismo paquete tiene que invocar una función o acceder a una variable , hacemos que tenga ámbito protected o de paquete

Page 5: Clean code capítulo 10

Las clases deben ser de tamaño reducido

• Con las funciones medimos el tamaño contando líneas físicas. Con las clases usamos otra medida distinta: las responsabilidades.

Page 6: Clean code capítulo 10

Tamaño de la clase

Mal Bien

Page 7: Clean code capítulo 10

Pero…• No solo hay que cuidar que no tenga muchos métodos, sino cuidar

especialmente que la clase no tenga muchas responsabilidades.• Una clave para identificar las responsabilidades es asociar a las

mismas con el nombre de la clase.• Cuanto mas ambiguo sea el nombre de una clase más

probabilidades hay de que tenga demasiadas responsabilidades.• Otra clave es que a la hora de describir la clase no nos

encontremos con palabras como “y”, “o”, “si”, “pero”.

Page 8: Clean code capítulo 10

Principio de responsabilidad única

• Las clases solo deben tener una responsabilidad y por ende, solo un motivo para cambiar.

• Podemos extraer los tres métodos de SuperDashBoard relacionados con la información de versiones en una clase independiente como Version. La clase Version es una construcción que se puede reutilizar en otras aplicaciones.

Page 9: Clean code capítulo 10

Principio de responsabilidad única

• En conclusión: “Los sistemas deben estar formados por muchas clases reducidas, no por algunas de gran tamaño. Cada clase reducida encapsula una única responsabilidad, tiene solo un motivo para cambiar y colabora con algunas otras para obtener los comportamientos deseados del sistema”

Page 10: Clean code capítulo 10

Cohesión

• Las clases deben tener un número reducido de variables de instancia.

• Los métodos de una clase deben manipular una o varias de dichas variables.

• Cuantas más variables manipule un método, más cohesión tendrá con su clase.

• Una clase en la que cada variable se usa en cada método tiene una cohesión máxima.

• La idea es crear una dependencia lógica entre métodos y variables.

Page 11: Clean code capítulo 10

Ejemplo de cohesión

Page 12: Clean code capítulo 10

Mantener resultados consistentes en clases de tamaño reducido

• La división de grandes funciones en otras más pequeña aumenta la proliferación de clases.

• Si necesito que dentro de una función 1 se llame a una función 2, en lugar de mandarle a ésta las variables declaradas en la función 1, estas variables hacerse de instancia o globales en la clase pero esto implica que se pierda cohesión ya que acumularían más y más variables globales que solo existen para que otras funciones las compartan.

• Cuando esto sucede es conveniente crear otra clase.

Page 13: Clean code capítulo 10

Organizar los cambios

• En muchos sistemas el cambio es continuo. Cada cambio supone un riesgo de que el resto del sistema no funcione de la forma esperada. En un sistema limpio organizamos las clases para reducir riesgos en los cambios.

• En un sistema ideal, incorporamos nuevas funciones ampliándolo, no modificando el código existente. Esto nos lleva a crear subclases que eviten que dos funcionen se relacionen tanto que el cambio en una afecte a la otra. Esta decisión facilita además la realización de pruebas.

Page 14: Clean code capítulo 10

MUCHAS GRACIAS