Глобальные переменные должны использоваться только для действительно глобального состояния. Использование глобальной переменной для представления чего-то вроде, например, широты северной границы карты, будет работать только в том случае, если когда-либо будет только одна «северная граница карты». Если в будущем код, возможно, придется работать с несколькими картами, которые имеют разные северные границы, код, который использует глобальную переменную для северной границы, вероятно, придется переработать.
В типичных компьютерных приложениях часто нет особых оснований полагать, что никогда не будет более одного объекта. Однако во встроенных системах такие допущения часто бывают более разумными. Хотя вполне возможно, что для поддержки нескольких пользователей одновременно может потребоваться типичная компьютерная программа, пользовательский интерфейс типичной встроенной системы будет предназначен для работы одним пользователем, взаимодействующим со своими кнопками и дисплеем. Как таковой, он в любой момент времени будет иметь одно состояние пользовательского интерфейса. Разработка системы таким образом, чтобы несколько пользователей могли взаимодействовать с несколькими клавиатурами и дисплеями, потребовала бы гораздо большей сложности и заняла бы гораздо больше времени, чем ее разработка для одного пользователя. Если система никогда не вызывается для поддержки нескольких пользователей, любые дополнительные усилия, приложенные для облегчения такого использования, будут потрачены впустую. Если, скорее всего, потребуется многопользовательская поддержка, было бы разумнее рискнуть отказаться от кода, используемого для однопользовательского интерфейса в случае необходимости многопользовательской поддержки, чем тратить дополнительное время на добавление многопользовательской поддержки. поддержка пользователей, которая, вероятно, никогда не понадобится.
Связанный фактор со встроенными системами заключается в том, что во многих случаях (особенно с пользовательскими интерфейсами) единственным практическим способом поддержки наличия более чем одного объекта является использование нескольких потоков. При отсутствии какой-либо другой потребности в многопоточности, вероятно, лучше использовать простую однопоточную конструкцию, чем увеличивать сложность системы с помощью многопоточности, которая, скорее всего, никогда не понадобится. Если добавление более чем одного объекта в любом случае потребует огромной перестройки системы, не будет иметь значения, потребует ли он переделки использования некоторых глобальных переменных.