Глобальная переменная (или альтернатива) лучшая практика в.NET

Столкнулся с той же проблемой и нашел исправление в закрытом выпуске репо. https://github.com/JeffreyWay/laravel-mix/issues/1136

Установите корень ресурса в webpack.mix.js с помощью следующего: mix.setResourceRoot ('. ./');

11
задан Cœur 13 December 2017 в 05:09
поделиться

6 ответов

Я думаю, 'не делают', немного резко, вот кавычка от Steve McConnell:

Используемый с дисциплиной, глобальные переменные полезны в нескольких ситуациях

Я думаю точно так же, как хороший плотник имеет правильный инструмент для задания и будет использовать правильный инструмент, если потребность возникает, программисты должны также использовать все инструменты в их распоряжении.

Прямо из Завершенного Кода 'Проявления силы' несколько причин использовать глобальные данные:

  • Сохранение глобальных значений
  • Оптимизация использования чрезвычайно общих данных
  • Устранение данных бродяги

McConnell также говорит:

Используйте Глобальные Данные Только как последнее прибежище. Прежде чем Вы обратитесь к использованию глобальных данных, рассмотрите несколько альтернатив.

вот альтернативы, которые он перечисляет:

  • Начните путем создания каждой переменной локальной и сделайте переменные глобальными только, поскольку Вы должны
  • Различайте глобальные переменные и переменные класса
  • Используйте стандартные программы доступа

Вещи, которые я упомянул здесь, получают большое покрытие в фантастическом Завершенном книжном коде

15
ответ дан 3 December 2019 в 02:41
поделиться

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

Если у Вас есть класс, которому нужен экземпляр класса CurrentUser, заставьте его попросить его в своем конструкторе.

Посмотрите здесь для большего количества информации: http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/

3
ответ дан 3 December 2019 в 02:41
поделиться

Существует приблизительно одна лучшая практика относительно использования глобальных переменных.

"Не делайте".

(Если это звучит резким, полагайте, что вещи как CurrentUser обычно принадлежат чего-то, из чего среда уже поддерживает уникальный экземпляр для Вас, такой как Сессия. Ищите API, чтобы получить текущую сессию, сохранить Ваш CurrentUser там и получить его оттуда. Не создавайте свой собственный globals, который представит Ваше приложение тяжелее для поддержания и уязвимый для условий состязания.)

8
ответ дан 3 December 2019 в 02:41
поделиться

Можно сохранить глобально доступные переменные как общедоступные статические свойства только для чтения соответствующего класса, такие как тот, который создает или заполняет его.

4
ответ дан 3 December 2019 в 02:41
поделиться

Шаблон "одиночка" более безопасен, чем глобальное разнообразие сада.

0
ответ дан 3 December 2019 в 02:41
поделиться

Моя практика состоит в том, чтобы поместить глобальные переменные, такие как CurrentUser , ConfigFilePath и аналогичные, в program.vb (класс запуска с подглавой ]). Таким образом, никто не использует глобальные переменные бездумно, поскольку доступ к ним должен осуществляться через пространство имен program .

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

Невозможно избежать использования глобальных переменных. ИМХО, лучше называть их настоящим именем и использовать их осторожно, чтобы затем замаскировать их в синглтонах, сессиях или файлах.

1
ответ дан 3 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: