объект глобального статического класса - PullRequest
0 голосов
/ 30 мая 2011

Я создаю глобальный статический объект, который будет использоваться во всем приложении. Я буду использовать функции-члены внутри делегатов / потоков. Есть ли потенциальные подводные камни в этом подходе?

1 Ответ

5 голосов
/ 30 мая 2011

Если объект не содержит изменяемого состояния, все может быть в порядке.Мне нравится использовать статические функции, которые не имеют побочных эффектов.(Mockists могут не согласиться с этим, поскольку вы не можете так же легко высмеивать статические функции, как интерфейсные функции.)

Но глобальное изменяемое состояние - зло.Вы можете найти множество статей по вопросам с глобальными переменными (и их другими формами, такими как синглтоны, статические поля, ...).

Если вам действительно нужно какое-то глобальное состояние, не пишите свою программус этим предположением.Вместо этого пусть DependencyInjection внедрит экземпляр объекта, который не является глобальным состоянием, в другие ваши объекты.Таким образом, вы можете легко переключаться на несколько экземпляров, как только возникнет такая необходимость.Например, при запуске тестов это действительно полезно.

...