Как ни странно, я думаю, что если вы спрашиваете чисто с точки зрения безопасности, я бы сказал, что лучше использовать глобальные переменные для передачи данных в функции.
"Ух ты! Ты псих ?" Я слышал, вы спрашиваете?
Это похоже на идею отмены ремней безопасности, вместо этого вместо того, чтобы зафиксировать острый 6-дюймовый шип на всех рулевых колесах. Это изменило бы ваше вождение, нет? Вы станете самым безопасным водителем в мире за одну ночь!
Итак, если вы заставили себя использовать глобальные переменные в качестве параметров, вы должны убедиться, что ваша функция провела как можно больше проверок безопасности этих данных, так как вы не могли быть уверены, что вызывающая сторона позаботилась об этом.
Конечно, как и шип рулевого колеса, это совершенно нелепое предложение. В реальном мире вы используете параметры функций везде, где это возможно : проще тестировать, легче читать, разрешать рекурсивные вызовы и т. Д. Более подход OO может заключаться в использовании класса, который принимает необработанные данные в его конструктор и помещает проверенные данные в свои переменные-члены для использования другими методами класса.
Пусть начнутся отрицательные голоса:)