SlideShare una empresa de Scribd logo
CAPITULO 17
SINTOMASY HEURISTICA
LIBRO CODIGO LIMPIO
ROBERT 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 clases
Métodos
 Variables
Donde 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_DAY
Si 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..!!!!

Más contenido relacionado

La actualidad más candente

Algoritmos de programacion Wilson Terceros
Algoritmos de programacion Wilson TercerosAlgoritmos de programacion Wilson Terceros
Algoritmos de programacion Wilson Terceros
Wilson Terceros Medrano
 
Algoritmos. Andrea Juarez y Gabriela Lozano
Algoritmos. Andrea Juarez y Gabriela LozanoAlgoritmos. Andrea Juarez y Gabriela Lozano
Algoritmos. Andrea Juarez y Gabriela Lozano
gandyforlife
 
algoritmos, pseudocódigos y diagrama de flujo
algoritmos, pseudocódigos y diagrama de flujoalgoritmos, pseudocódigos y diagrama de flujo
algoritmos, pseudocódigos y diagrama de flujo
laurabernier14
 

La actualidad más candente (18)

Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de Control
 
Algoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguajeAlgoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguaje
 
Métodos de programación
Métodos de programaciónMétodos de programación
Métodos de programación
 
1 conceptos algoritmos
1 conceptos algoritmos1 conceptos algoritmos
1 conceptos algoritmos
 
Algoritmos de programacion Wilson Terceros
Algoritmos de programacion Wilson TercerosAlgoritmos de programacion Wilson Terceros
Algoritmos de programacion Wilson Terceros
 
Algoritmos. Andrea Juarez y Gabriela Lozano
Algoritmos. Andrea Juarez y Gabriela LozanoAlgoritmos. Andrea Juarez y Gabriela Lozano
Algoritmos. Andrea Juarez y Gabriela Lozano
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Tipos de programacion
Tipos de programacionTipos de programacion
Tipos de programacion
 
Plan3 powerpoint
Plan3 powerpointPlan3 powerpoint
Plan3 powerpoint
 
EL ALGORITMO
EL ALGORITMOEL ALGORITMO
EL ALGORITMO
 
algoritmos, pseudocódigos y diagrama de flujo
algoritmos, pseudocódigos y diagrama de flujoalgoritmos, pseudocódigos y diagrama de flujo
algoritmos, pseudocódigos y diagrama de flujo
 
Presentación1
Presentación1Presentación1
Presentación1
 
Programacion I
Programacion I Programacion I
Programacion I
 
Actionscript 3
Actionscript 3Actionscript 3
Actionscript 3
 
Cuestionario consultado
Cuestionario consultadoCuestionario consultado
Cuestionario consultado
 
Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Destacado (8)

Programme Regulations
Programme RegulationsProgramme Regulations
Programme Regulations
 
Phineas_CV_-_Copy
Phineas_CV_-_CopyPhineas_CV_-_Copy
Phineas_CV_-_Copy
 
mahmoud (2)
mahmoud (2)mahmoud (2)
mahmoud (2)
 
Презентация о сервисе
Презентация о сервисеПрезентация о сервисе
Презентация о сервисе
 
Sulu cozeltiler ve kimyasal denge
Sulu cozeltiler ve kimyasal dengeSulu cozeltiler ve kimyasal denge
Sulu cozeltiler ve kimyasal denge
 
Retirate joven-y-rico
Retirate joven-y-ricoRetirate joven-y-rico
Retirate joven-y-rico
 
Jeopardy (cecilio)
Jeopardy (cecilio)Jeopardy (cecilio)
Jeopardy (cecilio)
 
Unix Admin
Unix AdminUnix Admin
Unix Admin
 

Similar a Clean code

Presentaciones base de datos , fundamentos de base de datos
Presentaciones base de datos , fundamentos de base de datosPresentaciones base de datos , fundamentos de base de datos
Presentaciones base de datos , fundamentos de base de datos
BryanSotalin1
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup
 

Similar a Clean code (20)

¿A qué huele tu código? Afinando nuestro olfato
¿A qué huele tu código? Afinando nuestro olfato¿A qué huele tu código? Afinando nuestro olfato
¿A qué huele tu código? Afinando nuestro olfato
 
10_SESION_10.pdf
10_SESION_10.pdf10_SESION_10.pdf
10_SESION_10.pdf
 
02 instrucciones
02   instrucciones02   instrucciones
02 instrucciones
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Refactoring code smelss
Refactoring   code smelssRefactoring   code smelss
Refactoring code smelss
 
Lenguaje Transact sql
Lenguaje Transact sqlLenguaje Transact sql
Lenguaje Transact sql
 
Bases de Datos Masivas Corte I.pptx
Bases de Datos Masivas Corte I.pptxBases de Datos Masivas Corte I.pptx
Bases de Datos Masivas Corte I.pptx
 
Diapositivas transact sql
Diapositivas transact sqlDiapositivas transact sql
Diapositivas transact sql
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando software
 
Clean code 7-8
Clean code 7-8Clean code 7-8
Clean code 7-8
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDT
 
Tercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corteTercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corte
 
Refactoring: improving the desing of existing code Cap 1
Refactoring: improving the desing of existing code Cap 1Refactoring: improving the desing of existing code Cap 1
Refactoring: improving the desing of existing code Cap 1
 
Fundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: ModularidadFundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: Modularidad
 
Resumen de power point analicis
Resumen de power point analicisResumen de power point analicis
Resumen de power point analicis
 
Presentaciones base de datos , fundamentos de base de datos
Presentaciones base de datos , fundamentos de base de datosPresentaciones base de datos , fundamentos de base de datos
Presentaciones base de datos , fundamentos de base de datos
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Clase 01 290615
Clase 01 290615Clase 01 290615
Clase 01 290615
 
Programacion java
Programacion javaProgramacion java
Programacion java
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 

Último

matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
alberto891871
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
alema3825
 
Algebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdfAlgebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdf
frankysteven
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 

Último (20)

SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
 
habilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdfhabilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdf
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
 
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptxTEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
 
Instalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a pasoInstalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a paso
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 
problemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelosproblemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelos
 
Presentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdfPresentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdf
 
&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
Sistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdfSistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdf
 
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
 
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALESLA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
 
monografia sobre puentes 1234456785432o5
monografia sobre puentes 1234456785432o5monografia sobre puentes 1234456785432o5
monografia sobre puentes 1234456785432o5
 
Deilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - ConstrucciónDeilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - Construcción
 
DESVIACION
DESVIACION DESVIACION
DESVIACION
 
Algebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdfAlgebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdf
 
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 

Clean code

  • 1. CAPITULO 17 SINTOMASY HEURISTICA LIBRO CODIGO LIMPIO ROBERT C. MARTIN EDISON SALAZAR MEJIA
  • 2. 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 clases Métodos  Variables Donde añadir llaves • -Todos los miembros del grupo de trabajo deben seguir estas convenciones (Codigo refactorizado)
  • 3. 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_DAY Si 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
  • 4. Sustituir números mágicos por constantes con nombre
  • 5. 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
  • 6. 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
  • 7. ENCAPSULAR CONDICIONALES • Lógica Booleana.... Se debe extraer funciones que expliquen la lógica de la condicional
  • 8. 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
  • 9. 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.
  • 10. LAS FUNCIONES SOLO DEBEN HACER UNA COSA
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. NO HEREDAR CONSTANTES • Añadir constantes a una interface y después acceder a las mismas heredando dicha interfaz es horrible
  • 16. NO HEREDAR CONSTANTES • No use la herencia para burlas las reglas del ámbito del lenguaje. Use una importación estática.