В недавних беседах с сокурсниками я выступал за то, чтобы избегать глобалов, кроме как хранить константы. Это своего рода типичная прикладная программа типа статистики, где каждый пишет свой собственный код и размеры проекта на небольшой стороне, поэтому людям может быть трудно увидеть проблемы, вызванные неряшливыми привычками.
Говоря об избежании глобальных привязок, я сосредоточен на следующих причинах, по которым глобальные переменные могут вызвать проблемы, но я хотел бы иметь несколько примеров в R и/или Stata, чтобы идти с принципами (и любыми другими принципами, которые вы могли бы найти важными), и мне трудно найти правдоподобных.
- Нелокальность: глобальные приложения делают отладку сложнее, потому что они лучше понимают поток кода
- Неявное взаимодействие: глобалы ломают простоту функционального программирования, позволяя сложные взаимодействия между удаленными сегментами кода
- Коллизии пространства имен: общие имена (x, я и т.д.) повторно используются, вызывая конфликты пространства имен
Полезным ответом на этот вопрос будет воспроизводимый и самодостаточный фрагмент кода, в котором глобальные вызовы вызывают определенный тип проблем, в идеале - с другим фрагментом кода, в котором исправлена проблема. Я могу при необходимости сгенерировать исправленные решения, поэтому пример проблемы более важен.
Соответствующие ссылки: