SlideShare una empresa de Scribd logo
Refinamiento sucesivo
<<La programación es un arte más
que una ciencia>>
Por: Juan Manuel Yepes
¿Qué es?
• Se refiera a refactorizar, de forma ordenada un
código…
• crear códigos que siguen un protocolo de
estilo y escritura, de tal forma que pueda ser
interpretado siguiendo la estructura desde la
parte superior sin necesidad de saltar de una
sección a otra…
El código analizado en este capitulo es basado
en la clase Args que permite el análisis de datos
Creando una instancia de clase Args con dos
parámetros, uno una cadena: “1,p#,d*” y el
segundo una matriz de argumentos.
En la cadena tenemos tres argumentos:
a. 1: es un parámetro booleano.
b. p: es un argumento entero.
c. d: es un argumento cadena.
La matriz de argumentos:
Es una línea de comandos pasados a
main.
• En caso de no retornar un erro
(ArgsException), la línea de comandos es
aceptada y se consulta la sentencia Args. Se
usan los respectivos métodos get para el
acceso a los valores de los argumentos. En
caso de surgir un problema, se genera un
ArgsException, la descripción de este es
recuperada mediante el método
errorMessage, propio de la excepción.
En cuanto al codigo
• Códigos eficientes varían en la cantidad de
código necesario dependiendo de entre otros
del tipo de lenguaje en el que se desee
implementar, por ejemplo en lenguajes
profusos como lo es el java, se requiere de una
mayor cantidad de palabras para satisfacer el
sistema. Por el contario en leguajes como lo
son el Ruby, Python o smalltalk los comandos
necesarios de ven reducidos.
En una primera versión del código se consigue la
funcionalidad, pero viéndolo en su forma, es un
desastre.
Tenemos que tener en cuenta que en ámbitos
profesionales el código en su mayoría no es
propio y alguna persona o uno mismo después
de un tiempo tendrá que interpretarlo y a
menos de que el código este depurado de la
forma correcta esta terea será de un alto grado
de dificultad. En estas primeras etapas
encontramos una gran cantidad de variable que
se podrían reducir y que no son nemotécnicas,
además de bloques de código con escasa o
ninguna optimización, aumentando su volumen
y dificultad de entendimiento.
En cuanto al diseño
• <<La programación es un arte más que una
ciencia>>, el código mas que una cosa que
esta preestablecida y estandarizada, es algo
que a pesar de ser diseñado y planificado
cambia constantemente a medida que se
avanza en el desarrollo de este evolucionando
y puliéndose. Por eso para un código limpio se
requiere de un primer código burdo y después
pulirlo, por eso para un código verdadera
mente limpio se requiere de un refinamiento
continuo.
• Este proceso separa a los programadores
experimentados que buscan una mayor
eficiencia y pulcritud del código de los
inexpertos que solo desean la funcionalidad.
• Cada cierto tiempo, según se considere
necesario, debemos refactorizar el código para
evitar el incremento de errores según va
aumentando en magnitud. Usando la disiplina
TDD (Test driven development) que trata
mediante pruebas constantes de evitar
modificar la funcionalidad del programa, esto
se logra con una ejecución permanente por
cada pequeña refactorización. En el caso de
repetir el mismo tipo de variables se puede
cambiar por una estructura de datos que
permita almacena el mismo tipo de variables

Más contenido relacionado

La actualidad más candente

Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
ing-jefersonbrito
 
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
José Antonio Sandoval Acosta
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
Juan Pablo Bustos Thames
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
Percy Javier Flores Mamani
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
Jose Diaz Silva
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
gabo
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
Zuleima
 
Métricas del Software
Métricas del SoftwareMétricas del Software
Métricas del Software
Arabel Aguilar
 
Arquitecturas de computadoras
Arquitecturas de computadorasArquitecturas de computadoras
Arquitecturas de computadoras
Ing. Alvin Antonio López Navarro
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
negroues
 
Rup disciplinas
Rup disciplinasRup disciplinas
Rup disciplinas
NELSON RODRIGUEZ
 
Terminologia basica del sistema operativo
Terminologia basica del sistema operativoTerminologia basica del sistema operativo
Terminologia basica del sistema operativo
__nancie
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
LISBETH ALEXANDRA VASQUEZ CIEZA
 
Estructura y funcionamiento del procesador
Estructura y funcionamiento del procesadorEstructura y funcionamiento del procesador
Estructura y funcionamiento del procesador
Jose Diaz Silva
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
Miguel Proaño Cedeño
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
ALEX MERINO
 
Conceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectosConceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectos
Guillermo Montero Fdez-Vivancos
 
Los objetos de software
Los objetos de softwareLos objetos de software
Los objetos de software
Manuel Alejandro Hernandez Sanchez
 
Modelos basados en prototipos
Modelos basados en prototiposModelos basados en prototipos
Modelos basados en prototipos
Joan Fernando Chipia Lobo
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
Ramiro Estigarribia Canese
 

La actualidad más candente (20)

Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Métricas del Software
Métricas del SoftwareMétricas del Software
Métricas del Software
 
Arquitecturas de computadoras
Arquitecturas de computadorasArquitecturas de computadoras
Arquitecturas de computadoras
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Rup disciplinas
Rup disciplinasRup disciplinas
Rup disciplinas
 
Terminologia basica del sistema operativo
Terminologia basica del sistema operativoTerminologia basica del sistema operativo
Terminologia basica del sistema operativo
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Estructura y funcionamiento del procesador
Estructura y funcionamiento del procesadorEstructura y funcionamiento del procesador
Estructura y funcionamiento del procesador
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Conceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectosConceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectos
 
Los objetos de software
Los objetos de softwareLos objetos de software
Los objetos de software
 
Modelos basados en prototipos
Modelos basados en prototiposModelos basados en prototipos
Modelos basados en prototipos
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 

Similar a Refinamiento sucesivo-clean cade cap 14

OPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGOOPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGO
MAURICIOANDRES39
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
ValeriaBerrones
 
tutorial de c++
tutorial de c++tutorial de c++
tutorial de c++
Jesus22barrera
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
mariopoza00
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
Jose Gallardo
 
Giseproi curso de programación - sesión 7 - reglas de codificación
Giseproi   curso de programación - sesión 7 - reglas de codificaciónGiseproi   curso de programación - sesión 7 - reglas de codificación
Giseproi curso de programación - sesión 7 - reglas de codificación
giseproi
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
AndresDvila
 
Conceptos basicos algoritmos
Conceptos basicos algoritmosConceptos basicos algoritmos
Conceptos basicos algoritmos
Pablo Contramaestre
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
Aiko Himeko
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Bryan Chasiguano
 
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
Pablo Lafuente Cordero
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
MIRKINHO2002
 
Programacion java
Programacion javaProgramacion java
Programacion java
AraceliFernndezSanto
 
PowerPoint (Programación)
PowerPoint (Programación)PowerPoint (Programación)
PowerPoint (Programación)
Pablo Lafuente Cordero
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
JOSSELINEMARIBEL
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
Edgardo Martinez
 
Javaqert
JavaqertJavaqert
Javaqert
JavaqertJavaqert
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
Pablo Lafuente Cordero
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Alfredo Chavez
 

Similar a Refinamiento sucesivo-clean cade cap 14 (20)

OPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGOOPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGO
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
tutorial de c++
tutorial de c++tutorial de c++
tutorial de c++
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Giseproi curso de programación - sesión 7 - reglas de codificación
Giseproi   curso de programación - sesión 7 - reglas de codificaciónGiseproi   curso de programación - sesión 7 - reglas de codificación
Giseproi curso de programación - sesión 7 - reglas de codificación
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
 
Conceptos basicos algoritmos
Conceptos basicos algoritmosConceptos basicos algoritmos
Conceptos basicos algoritmos
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
 
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
Programacion java
Programacion javaProgramacion java
Programacion java
 
PowerPoint (Programación)
PowerPoint (Programación)PowerPoint (Programación)
PowerPoint (Programación)
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Javaqert
JavaqertJavaqert
Javaqert
 
Javaqert
JavaqertJavaqert
Javaqert
 
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 

Último

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
holabuscafiesta
 

Último (8)

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
 

Refinamiento sucesivo-clean cade cap 14

  • 1. Refinamiento sucesivo <<La programación es un arte más que una ciencia>> Por: Juan Manuel Yepes
  • 2. ¿Qué es? • Se refiera a refactorizar, de forma ordenada un código… • crear códigos que siguen un protocolo de estilo y escritura, de tal forma que pueda ser interpretado siguiendo la estructura desde la parte superior sin necesidad de saltar de una sección a otra…
  • 3. El código analizado en este capitulo es basado en la clase Args que permite el análisis de datos Creando una instancia de clase Args con dos parámetros, uno una cadena: “1,p#,d*” y el segundo una matriz de argumentos. En la cadena tenemos tres argumentos: a. 1: es un parámetro booleano. b. p: es un argumento entero. c. d: es un argumento cadena. La matriz de argumentos: Es una línea de comandos pasados a main.
  • 4. • En caso de no retornar un erro (ArgsException), la línea de comandos es aceptada y se consulta la sentencia Args. Se usan los respectivos métodos get para el acceso a los valores de los argumentos. En caso de surgir un problema, se genera un ArgsException, la descripción de este es recuperada mediante el método errorMessage, propio de la excepción.
  • 5. En cuanto al codigo • Códigos eficientes varían en la cantidad de código necesario dependiendo de entre otros del tipo de lenguaje en el que se desee implementar, por ejemplo en lenguajes profusos como lo es el java, se requiere de una mayor cantidad de palabras para satisfacer el sistema. Por el contario en leguajes como lo son el Ruby, Python o smalltalk los comandos necesarios de ven reducidos.
  • 6. En una primera versión del código se consigue la funcionalidad, pero viéndolo en su forma, es un desastre. Tenemos que tener en cuenta que en ámbitos profesionales el código en su mayoría no es propio y alguna persona o uno mismo después de un tiempo tendrá que interpretarlo y a menos de que el código este depurado de la forma correcta esta terea será de un alto grado de dificultad. En estas primeras etapas encontramos una gran cantidad de variable que se podrían reducir y que no son nemotécnicas, además de bloques de código con escasa o ninguna optimización, aumentando su volumen y dificultad de entendimiento.
  • 7. En cuanto al diseño • <<La programación es un arte más que una ciencia>>, el código mas que una cosa que esta preestablecida y estandarizada, es algo que a pesar de ser diseñado y planificado cambia constantemente a medida que se avanza en el desarrollo de este evolucionando y puliéndose. Por eso para un código limpio se requiere de un primer código burdo y después pulirlo, por eso para un código verdadera mente limpio se requiere de un refinamiento continuo.
  • 8. • Este proceso separa a los programadores experimentados que buscan una mayor eficiencia y pulcritud del código de los inexpertos que solo desean la funcionalidad.
  • 9. • Cada cierto tiempo, según se considere necesario, debemos refactorizar el código para evitar el incremento de errores según va aumentando en magnitud. Usando la disiplina TDD (Test driven development) que trata mediante pruebas constantes de evitar modificar la funcionalidad del programa, esto se logra con una ejecución permanente por cada pequeña refactorización. En el caso de repetir el mismo tipo de variables se puede cambiar por una estructura de datos que permita almacena el mismo tipo de variables