Los bloques arbitrarios son útiles para introducir variables intermedias que solo se usan en casos especiales de un cálculo.
Este es un patrón común en la informática científica, donde los procedimientos numéricos suelen:
- confiar en muchos parámetros o cantidades intermedias;
- tener que lidiar con muchos casos especiales.
Debido al segundo punto, es útil introducir variables temporales de alcance limitado, que se logran usando un bloque arbitrario o introduciendo una función auxiliar.
Si bien la introducción de una función auxiliar puede parecer una obviedad
o una mejor práctica a seguir ciegamente, en realidad hay pocos beneficios para hacerlo en esta situación particular.
Debido a que hay muchos parámetros y cantidades intermedias, queremos introducir una estructura para pasarlos a la función auxiliar.
Pero, dado que queremos ser consecuentes con nuestras prácticas, no introduciremos solo una función auxiliar sino varias. Entonces, si introducimos estructuras ad-hoc que transmiten parámetros para cada función, que introducen una gran cantidad de sobrecarga de código para mover los parámetros de un lado a otro, o si introducimos uno, los regirá a todos la estructura de la hoja de trabajo, que contiene todas nuestras variables pero parece un paquete de bits sin consistencia, donde en cualquier momento solo la mitad de los parámetros tienen un significado interesante.
Por lo tanto, estas estructuras auxiliares son típicamente engorrosas y usarlas significa elegir entre hinchar código o introducir una abstracción cuyo alcance es demasiado amplio y debilitar el significado del programa, en lugar de fortalecerlo .
La introducción de funciones auxiliares podría facilitar las pruebas unitarias del programa mediante la introducción de una granularidad de prueba más fina, pero la combinación de las pruebas unitarias para los procedimientos de bajo nivel y las pruebas de regresión en forma de comparaciones (con numdiff) de trazas numéricas de los procedimientos hace un trabajo igualmente bueno .