Programacion Extrema NO es una programacion que sube montanas, anda en motocross y se avienta escaladas libres, es una programacion que busca optimizar el numero de lineas, complejidad y velocidad de las cosas, un ejemplo es lo que llamo un arreglo de funciones, o tambien funciones flexibles, un programa normal que busca comandos dentro de un archivo podria verse asi:
#include < stdio.h >
#include < unistd.h >
int funcion1(char *linea) {
printf(”orale entro a funcion1\n”);
return 0;
}
int funcion2(char *linea) {
printf(”entramos a funcion2 %s\n”, linea);
return 0;
}
int main(int argc, char **argv) {
if(argc < 2) {
printf("Uso: %s < palabra >\n”, argv[0]);
return -1;
}
printf(”ahora mandamos ejecutar funcion1\n”);
funcion1(argv[1]);
printf(”ahora ejecutando funcion2\n”);
funcion2(argv[1]);
printf(”terminamos\n”);
return 0;
}
la salida del archivo es la siguiente:
root@firebolt f00 # gcc -o normal normal.c
root@firebolt f00 # ./normal www.soldemorelia.com.mx
Ahora mandamos ejecutar funcion1
se mando www.soldemorelia.com.mx a funcion1
ahora ejecutando funcion2
se mando www.soldemorelia.com.mx a funcion2
terminamos
root@firebolt f00 #
Un programa que es flexible es el siguiente:
#include < stdio.h >
#include < unistd.h >
struct ejemplo {
int id;
char *nombre;
int (*execute)(char *linea);
};
int funcion1(char *linea) {
printf(”se mando %s a funcion1\n”, linea);
return 0;
}
int funcion2(char *linea) {
printf(”se mando %s a funcion2\n”, linea);
return 0;
}
struct ejemplo f[] = {{1, “funcion numero 1″, funcion1},{2, “function numero 2″, funcion2}, {0, NULL, NULL}};
int main(int argc, char **argv) {
int i = 0;
if(argc < 2) {
printf("Uso: %s < palabra >\n”, argv[0]);
return -1;
}
printf(”ahora mandamos ejecutar funcion1\n”);
f[0].execute(argv[1]);
printf(”ahora ejecutando funcion2\n”);
f[1].execute(argv[1]);
printf(”terminamos\n”);
return 0;
}
El codigo es un poco mas largo pero si se quisiera agregar una funcion extra solo se tendria que agregar la funcion y una linea a a estructura, esto da la posibilidad de hacer funciones o cambiar funciones al vuelo y decir “si la palabra es asi has esto si no has lo otro” sin utilizar tanas lineas de codigo y mucho mas facil de leer y mantener.
Regresamos al codigo puro! La proxima semana veremos un programa que nos deja checar servidores y que utiliza ¡funciones flexibles!