Las rutinas de devolución de llamada parecen ser el escenario más común presentado hasta ahora. Sin embargo, hay muchos otros ...
Máquinas de estados finitos donde los elementos de las matrices (multidimensionales) indican la rutina que procesa/maneja el siguiente estado. Esto mantiene la definición del FSM en un lugar (el conjunto).
Las funciones de habilitación y la desactivación de funciones se pueden realizar utilizando punteros a funciones. Puede tener funciones que desee habilitar o deshabilitar que hagan cosas similares pero distintas. En lugar de poblar y saturar su código con if-else, construye variables de prueba, puede codificarlo para que use un puntero de función, y luego puede habilitar/deshabilitar características cambiando/asignando el puntero a la función. Si agrega nuevas variantes, no tiene que rastrear todo su if-else o cambiar de mayúsculas y minúsculas (y corre el riesgo de perder una); en su lugar, simplemente actualice su puntero de función para habilitar la nueva característica, o deshabilite la anterior.
Reducción del desorden de código Me referí a esto en el ejemplo anterior. Ejemplos como ...
switch (a) {
case 0:
func0();
break;
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
default:
funcX();
break;
}
puede simplificarse a ...
/* This declaration may be off a little, but I am after the essence of the idea */
void (*funcArray)(void)[] = {func0, func1, func2, func3, funcX};
... appropriate bounds checking on 'a' ...
funcArray[a]();
hay muchos más. Espero que esto ayude.
Esto es C#, pero también entra en C/C++ y la practicidad de los indicadores de función: http://stackoverflow.com/questions/667410/the-benefits-of-using-function-pointers – Algorhythm