Clean code

17
CAPITULO 17 SINTOMAS Y HEURISTICA LIBRO CODIGO LIMPIO ROBERT C. MARTIN EDISON SALAZAR MEJIA

Transcript of Clean code

CAPITULO 17SINTOMAS Y HEURISTICA

LIBRO CODIGO LIMPIOROBERT C. MARTIN

EDISON SALAZAR MEJIA

Seguir las convenciones estándar• Seguir un estándar de diseño basado en normas comunes

de la industria (protocolos)• Deber tener muy claro en el estándar:

Donde declarar variables de instancia Como asignar nombres a clasesMétodos VariablesDonde añadir llaves

• - Todos los miembros del grupo de trabajo deben seguir estas convenciones (Codigo refactorizado)

Sustituir números mágicos por constantes con nombre• Esta es la regla mas antigua del desarrollo de software

(1960 - Manuales de COBOL,FORTRAN y PL/1)• Se debe ocultar constantes y números con nombres

correctos, el cual sea fácil de reconocer.El número 86400 debe ocultarse SECONDS_PER_DAYSi se va a imprimir 55 líneas, la constante 55 debe ocultarse por

LINES_PER_PAGE• Se debe tener en cuenta que el termino número mágico

no solo se aplica para números, sino también para símbolos que tengan un valor no descriptivo

Sustituir números mágicos por constantes con nombre

PRECISION• Declara una variable como ArrayList, cuando solo se necesita una List, es

un exceso e restricciones.• Falta de restricciones es crear todas las variables como protected• Al adoptar una decisión dentro del código debe de hacerlo en forma

precisa, saber por que la adopta y regular las excepciones• Si se invoca una función que devuelva NULL, se debe de comprobar ese

NUll.• Comprobar la cantidad de registros de la base de datos para estar seguros• si tiene que trabajar con divisas use enteros y aplique redondeo correcto• La ambigüedad y las imprecisiones son el resultado de desacuerdos o de

indolencia

ESTRUCTURA SOBRE CONVENCIÓN• Aplique las decisiones de diseño con las estructuras y no

convenciones• Los casos Switch con enumeración de nombres correctos son

inferiores a clases base con métodos abstractos. (herencia)• "Hacer una función que por dentro contenga los casos

necesarios, con el fin de aplicar solo la función en el Switch"• no siempre se debe utilizar el Switch/case de la misma manera• Las clases base hacen que las clases concretas implementen

métodos abstractos

ENCAPSULAR CONDICIONALES• Lógica Booleana.... Se debe extraer funciones que

expliquen la lógica de la condicional

EVITAR CONDICIONALES NEGATIVAS• Las condicionales negativas son mas difíciles de

entender que las positivas, por tanto se deben expresar como condiciones positivas mientras se pueda

LAS FUNCIONES SOLO DEBEN HACER UNA COSA• Es tentador tener funciones que realicen varias

operaciones.• Este tipo de funciones que hacen mas de una cosa

deben convertirse en funciones de menos tamaño, cada una para cada cosa.

LAS FUNCIONES SOLO DEBEN HACER UNA COSA

CONEXIONES TEMPORALES OCULTAS• Estructure los argumentos de sus funciones de modo

que el orden de invocación sea evidente• Tener en cuenta que el orden de las funciones es

importante. • Cada función genera un resultado que la siguiente

necesita, aumentando la complejidad de las funciones, pero ese incremento de sintáctica muestra la verdadera complejidad de la situación, aumentando el rendimiento y el entendimiento.

EVITAR LA ARBITRARIEDAD• Si la estructura parece coherente en la totalidad del

sistema, otros la usarán y conservaran la convención.• Se debe asegurar que la estructura del código

comunique cada argumento.• las clases publicas no son utilidades de otra clase, no

deben incluirse en el ámbito de otra clase.

EVITAR EXTENSAS LISTAS DE IMPORTACIÓN MEDIANTE EL USO DE COMODINES• Si usa dos o mas clases de un paquete, importe el paquete

completo con Import package.*;

• Las listas de importación intimidan al lector.• Debe ser una instrucción concisa con los que colaboramos.• Las importaciones especificas son dependencias rígidas,

mientras que las importaciones de comodín no.• Lo cual permite aligerar las consultas en nuestros módulos,

agregando el paquete a la lista de búsqueda al localizar los nombres.

NO HEREDAR CONSTANTES• Añadir constantes a una interface y después acceder a

las mismas heredando dicha interfaz es horrible

NO HEREDAR CONSTANTES

NO HEREDAR CONSTANTES• No use la herencia para burlas las reglas del ámbito del

lenguaje. Use una importación estática.

GRACIAS..!!!!