Sunday, February 05, 2006

Rutinas de Alta calidad

Antes que comienze, me gustaria defender ambos codigos. Dado que ambos codigos fueron diseñados como algoritmos y no subrutinas o funciones, yo diria que muchos aspectos del capitulo 7 no se deberian de aplicar para el analisis de estos codigos. Ya dicho esto continuo con la evaluación.

Analisis de mi propio codigo para sacar el MCM;
En mi opinion, este algoritmo si tiene que estar puesto en una sub-rutina. Quizas tambien hubiese sido buena decicion hacer una sub-rutina para sacar el Maximo commun factor (MCF). De esta manera el algoritmo estaria mas centrado en la idea de sacar el MCM, y no deducir el MCF primero para sacar el MCM. En este caso el algoritmo hace 2 cosas bien, pero hubiese sido mejor tener 2 algoritmos apartes. Asi tengo 2 algoritmos que hacen 2 cosas bien, y no 1 que hace 2 cosas bien.

El tamaño de la rutina es especificamente el esfuerzo logico que toma, con 1 extra paso para optimizar el codigo. No mucha gente se dieron cuenta, pero el ordenamiento que hago para que Numero1 sea mayor que Numero2 no es estrictamente necesario. En el bucle de la condicion, si el Numero1 es menor que el Numero2, la division modular resultaria en el Numero1 (mas pequeño) . Las proximas sentencias en el codigo intercambiaria los valores, y en la proxima iteracion la respuesta fuera la correcta. De todos modos, pense que antes de hacer esos calculos, era mejor ordenar los numeros.

Como este pedazo de codigo es estrictamente un algoritmo y no una subrutina o función, ningun paramametro fue declarado. Pero en mi opinion, el algoritmo solo utiliza las variables que necesita y estrictamente eso. En caso que hubiese hecho una funcion, solo pasaria los 2 numeros para analizar, en vez de pedirlos como una entrada, y mandaria el resultado como valor de retorno.

Analisis de Codigo para Sacar el Nuemro Primo;
Este codigo esta bien separado, la logica de deducir si el numero es primo o no esta separado de la logica para sumar los primeros 100 numeros. La función (o subrutina, todavia no estoy claro como ella describio su pseudo) EsPrimo tiene un buen nombre, se puede entender que hace la función (o subrutina) cuando se ecucha el nombre. Aunque "Calcular" le falta un sujeto.

Tambien ambas funciones/rutinas hacen solo 1 cosa, y el tamaño de la funciones/rutinas son resultado directo del esfuerzo logico que requieren y nada mas. En los casos de paso de parametros y valores de salida no esta claro el pseudo y prefiero no comentar sobre los mismos. Pero solo estan declaradas las variables que son requeridas y nada mas.

Conclusión;
En mi opinion ambos algoritmos fueron bien diseñados, dado que estaban desarollados como algoritmos y no subrutinas o funciónes. Quizas sea por experiencia previas que intentamos que el pseudo sea mas y mas como codigo de algun lenguaje.

No comments: