Зачем вам нужно жестко кодировать ширину экрана в первую очередь? От куда это? В большинстве реальных приложений он исходит из некоторого системного API, который сообщает вам, какое разрешение вы в настоящее время используете, или какие разрешения система может отображать.
Затем вы просто берете это значение и передаете его туда, где это необходимо.
Одним словом, на этой линии: doSomethingWithValue(SCREEN_WIDTH);
вы уже это делаете. SCREEN_WIDTH
может быть глобальным в этом конкретном примере, но это не обязательно, потому что функция не является , обращаясь к ней как глобальная. Вы передаете значение функции во время выполнения, поэтому функция видит не глобальную переменную, а просто простой аргумент функции.
Еще один важный момент в том, что, как правило, ничего не происходит с неизменяемыми глобальными данными.
Глобальные константы, как правило, прекрасные. Проблема возникает, когда у вас есть mutable глобальное состояние: объекты, к которым можно получить доступ по всему приложению, и которые могут иметь другое значение в зависимости от , когда вы смотрите.Это затрудняет рассуждение и вызывает ряд проблем.
Но глобальный константы являются безопасными. Возьмем, к примеру, пи. Это математическая константа, и нет никакого вреда, позволяя каждой функции видеть, что pi равно 3.1415 ..... потому что это то, что это -, и это не изменится.
если Ширина экрана - это жестко закодированная константа (как в вашем примере), то она тоже может быть глобальной, не вызывая хаоса. (Хотя по понятным причинам, это, вероятно, не должно быть постоянным в первом place9
Так что я слышу, что глобальные константы обычно в порядке, это глобальные переменные, которые вызывают реальные проблемы. Спасибо, парни! – Lewis