По возможности следует избегать.
- Чтобы понять, что делает функция, берущая данные из замыкания, нужно прочитать не только ее, а еще и весь предшествующий код.
- Тяжелее в отладке, разбираться с большой кучей данных, разбираться что используется, что нет.
- Тяжелее переиспользовать, точнее возможность переиспользования кода стремится к нулю.
- Тяжелее в тестировании, вместо изменения входных параметров придется изменять большой кусок состояния приложения.
Лучше написать больше, но понятнее, чем сочинять сложные взаимовлияющие конструкции, в которых сам потом будешь разбираться дольше, чем писал.