Laboratorio: Con funciones

Los siguientes 4 ejercicios nos ayudarán a practicar cómo extraer funciones a partir de un procedimiento bien organizado.

Instrucciones

Luego de descargar el código, abra la solución “Laboratorio.ConFunciones.sln”. Cada ejercicio es una carpeta en el proyecto “Laboratorio.Negocio” y tiene sus pruebas unitarias en “Laboratorio.Negocio.UnitTests”.

Note que hay una carpeta “Como un procedimiento” y otra “Con funciones”. El código en ambas es el mismo, pero los refactorings los haremos en “Con funciones”. Así, en caso de duda, puede consultar el código inicial en “Como un procedimiento”.

Ya que vamos a aplicar refactorings, ejecute todas las pruebas unitarias antes de iniciar. Verifique que todas son exitosas. Luego de cada refactoring, ejecútelas para mantener la seguridad de no haber afectado la funcionalidad.

Cada ejercicio es una carpeta y namespace. Siga las instrucciones en cada ejercicio.

Ejercicio 1: Valoraciones

Este procedimiento retorna un número decimal. En este ejercicio, las funciones coordinadoras tienen una sola variable local.

Recuerde diferenciar detalles y funciones coordinadoras:

  • Nombre las funciones coordinadoras como “GenereElMontoSinRedondear” u “ObtengaElMontoSinRedondear”. Use el nombre de la variable a asignar como una guía para el nombre.
  • Nombre las funciones de detalle con nombres específicos, como “Redondee”, “CalculeElMontoSinRedondear”, o “DetermineElMontoConvertido” (para la función del IF).
  • Note que el IF es considerado un detalle, y una función de responsabilidad única puede tener más de un “return”.
  • Extraiga funciones desde abajo hacia arriba del procedimiento.

Ejercicio 2: Códigos de referencia

En este caso, trabajamos con Strings y las funciones coordinadoras tendrán varias variables locales.

Para funciones de detalle, podemos utilizar nombres específicos como “FormateeElRequerimiento” o “AjusteElConsecutivo”, mientras que las coordinadoras las mantenemos con nombres generales como “ObtengaLaFechaFormateada”.

Ejercicio 3: Rendimiento por descuento

En este algoritmo, recuerde que el IF es considerado como un solo bloque de código, así que se extrae completo a una función. El IF se puede simplificar hasta que no requiera los paréntesis {}, y realice returns de un detalle o de una función.

Recuerde siempre velar por el orden en la declaración de sus variables locales.

Ejercicio 4: Valoraciones por ISIN

Este algoritmo retorna une estructura de datos, así que tenemos un procedimiento donde cada una de las propiedades de la estructura es asignada con una variable local.

Advertencia: Al extraer las funciones, nunca deberíamos tener un parámetro de salida (out) o modificar un parámetro. Los parámetros deberían se datos de lectura, no de escritura.

Estos son los pasos recomendados:

1. Extraiga funciones para asignar a cada variable local que es asignada a una propiedad de la estructura de datos, así:

funciones-estructurasdedatos

2. Extraiga las funciones del resto de los métodos hasta que todas sean de responsabilidad única.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s