Ответ 1
Если у вас есть универсальные константы, необходимые для каждой части вашей программы, это указывает на проблему проектирования (всякий раз, когда вы теряете, где что-то должно происходить, вы, вероятно, сталкиваетесь с проблемой проектирования). Такие вещи, как гравитационная постоянная, не должны быть необходимыми для подавляющего большинства программ, поэтому они обычно не должны быть глобальными константами (это также верно для C++).
Поместите свои константы в то, что нуждается в этой константе, или передайте их в то, что нуждается в этой константе. SpriteKit должен выполнять для вас большинство гравитационных вычислений, но если вы выполняете дополнительную физическую работу, то должен быть какой-то объект, представляющий физический движок или "мир". Это где гравитационная постоянная принадлежит. В качестве альтернативы, поместите гравитационную постоянную в структуру, которую вы передаете в физический движок при запуске.
Даже если вам действительно нужна гравитационная постоянная, вы должны поместить ее в структуру, подобную PhysicalConstants
, а не в универсальную Constants
(которая затрудняет повторное использование кода, потому что он смешивает несвязанные вещи). Распространенным случаем этого в моем коде являются "стилевые" константы, такие как "цвет подсветки всей системы" (которые могут быть изменены клиентом, поэтому я хочу, чтобы их можно было изменить в одном месте). Они помещаются в заголовок Style.h
в моих приложениях, а теперь переходят в структуру Style
. Но они хранятся отдельно от нестандартных констант.