Цитата(adnega @ Apr 4 2016, 09:22)

Но такой подход убивает чистоту функции, а в некоторых языках программирования чистота функции большой плюс.
С многопоточностью будут проблемы у такой функции.
С этим никто не спорит, но нужно решать в каждом конкретном случае, как будет удобней.
Цитата
Функцию с внутренней переменной step не особенно запихнешь в библиотеку для повторного использования.
А вот тут никто вам не запрещает это делать. Более того, в стандартных библиотеках Си полно функций с таким финтом,
в описаниях отдельно пишут, что они "опасные", не реентерабельные, дописывают новые варианты безопасных,
но нестандартных функций. Но стандартные функции то уже никуда не денешь

Вот пример, функция парсинга текстовых строк
strtokЦитата
Совпадение имен глобальной и локальной переменной тоже лучше не практиковать - попутать что где легче простого.
Одинаковые глобальные и локальные переменные тоже не советую применять.
А вот одинаковые
локальные и статические внутри функций - очень даже можно применять.
Цитата(adnega @ Apr 5 2016, 11:04)

А если все необходимые переменные передавать в функцию (в виде списка или сложного объекта)?
Такой подход тоже имеет место быть, когда есть несколько одинаковых кусков кода обработки.
Цитата(Сергей Борщ @ Apr 5 2016, 11:52)

Все это хорошо, но локальные данные могут быть и константными (скажем, таблица для перевода номера микрошага в коэф...
Для таблиц и констант можно применять указатели, которые тоже передаются в функцию. Можно передавать также и переменные свойства таблиц (длину, структуру).
Много чего можно придумать, главное чтобы понятность кода не страдала.
А то сам иногда так накручу код для компактности, потом смотрю на тот ужОс, который получился и понимаю, что написание "тупо в лоб методом copy-paste" было бы лучше