Давайте рассмотрим два варианта, которые вы представили:
Одиночные глобальные экземпляры
Плюсы:
- Меньше затрат производительности в каждом методе, потому что объекты уже созданы
- Нет необходимости выяснять, как передавать данные по
Минусы:
- Вероятность того, что объекты созданы, но никогда не используются. Это пустая трата памяти и производительности. Этого можно избежать, используя ленивую инициализацию, которая создаст объект при первом его использовании, но при этом сохранит один глобально созданный экземпляр.
- Проблемы многопоточности, такие как обеспечение согласованности данных (потенциальная производительность и затраты на разработку)
Уникально для экземпляров функций
Плюсы:
- Каждая функция получает свою собственную копию, и ей не нужно беспокоиться о том, что другие функции могут выполнять одновременно.
- Если объекты не создаются постоянно и не уничтожаются, общий объем используемой памяти для вашей программы может быть ниже.
Минусы:
- В зависимости от того, сколько времени потребуется для создания объекта, у вас могут возникнуть проблемы с отзывчивостью в пользовательском интерфейсе.
- В зависимости от того, как создается объект, возможно, вам придется подождать, пока другая функция завершит создание объекта, прежде чем вы сможете создать свою копию.
Этот список не является исчерпывающим, но он указывает на основные компромиссы, как я их вижу. Очевидно, вы знаете больше о ситуации и какие компромиссы приемлемы. Некоторые разумно выбранные глобальные переменные могут быть полезны, но, как и большинство людей, я бы отказался от большого количества глобальных глобальных переменных, если они не представляют что-то, что может быть только одним, например SerialPort, или что-то, что во всем приложении должно быть только , как класс ApplicationSettings.
Не недооценивайте свое время (как сейчас, так и позже, когда вы вернетесь за техническое обслуживание) как стоимость. Иногда «лучшее» решение на самом деле может быть хуже, потому что для его реализации требуется слишком много времени. Часто «достаточно хорошо» оказывается, ну, в общем, достаточно хорошо.