Произвольные блоки полезны для введения промежуточных переменных, которые используются только в особых случаях вычислений.
Это распространенная модель в научных вычислениях, где числовые процедуры обычно:
- полагаться на множество параметров или промежуточных величин;
- приходится иметь дело с множеством особых случаев.
В связи со вторым моментом полезно ввести временные переменные ограниченной области действия, что достигается путем использования произвольного блока или введения вспомогательной функции.
Хотя введение вспомогательной функции может показаться легким делом
или лучшей практикой слепого следования, на самом деле в этой конкретной ситуации это мало что дает .
Поскольку существует множество параметров и промежуточных величин, мы хотим ввести структуру для передачи их вспомогательной функции.
Но, поскольку мы хотим следовать нашим практикам, мы не будем вводить только одну вспомогательную функцию, но несколько. Итак, мы вводим специальные структуры, передающие параметры для каждой функции, которые вводят много накладных расходов на код для перемещения параметров вперед или назад, или мы вводим единую структуру, которая будет управлять всеми их структурами листа, которая содержит все наши переменные, но выглядит как пакет битов без консистенции, где в любое время только половина параметров имеет интересный смысл.
Поэтому эти вспомогательные структуры обычно громоздки, и их использование означает выбор между раздуванием кода или введением абстракции, область действия которой слишком широка и ослабляет смысл программы, вместо того, чтобы усиливать ее .
Введение вспомогательных функций может упростить модульное тестирование программы, введя более тонкую гранулярность теста, но комбинируя модульное тестирование не для того, чтобы низкоуровневые процедуры и регрессионное тестирование в форме сравнения (с numdiff) числовых следов процедур выполняли одинаково хорошую работу ,