A-tit indd


Это глобальная переменная



Download 3,35 Mb.
Pdf ko'rish
bet78/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   74   75   76   77   78   79   80   81   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Это глобальная переменная
Когда игры создавались энтузиастами в гараже, аппа-
ратная поддержка значила намного больше, чем ото-
рванные от реальности принципы проектирования. 
Разработчики старой школы, которые писали на C и ас-
семблере, использовали статические и глобальные пере-
менные, не знали проблем и создавали отличные игры. 
Архитектура и возможность поддержки стали бутылоч-
ным горлышком, когда сложность игр возросла. Разра-
ботчики столкнулись с проблемами не из-за аппаратных 
ограничений, а из-за ограничений 
производительности
.
Поэтому мы стали использовать языки, подобные 
С++, а с ними нажитую непосильным трудом мудрость 
предыдущих поколений разработчиков. Один из уроков, 
который нам пришлось усвоить: глобальные перемен-
ные плохи по ряду причин…


104
Одиночка (Singleton) — 
Паттерны программирования игр
• Они делают сложнее понимание кода.
Предполо-
жим, мы пытаемся найти ошибку в функции, кото-
рую писал кто-то другой. И если она не затрагива-
ет никакое глобальное состояние, нам достаточно 
просто понять тело самой функции и передаваемые 
в нее аргументы.
А теперь представьте, что где-то в середи-
не вызывается некая функция 
SomeClass:: 
getSomeGlobalData()
. В попытках разобраться 
в происходящем мы будем вынуждены перекопать 
весь код, стараясь выяснить, кто еще изменяет эти 
глобальные данные. Поверьте, вы не начнете по-на-
стоящему ненавидеть глобальное состояние, пока 
вам не придется где-то в три часа утра использо-
вать 
grep
, чтобы среди миллионов строк кода най-
ти единственный вызов, который присваивает пе-
ременной ошибочной значение.
• Они способствуют увеличению связанности.
Но-
вому программисту в вашей команде, еще не знако-
мому с вашей превосходной, поддерживаемой и неза-
висимой архитектурой, поручили его первое задание: 
заставить камни при падении на землю издавать зву-
ки. Мы с вами уже знаем, что не стоит связывать код 
физического движка с кодом, ответственным за 
аудио

ни при каких обстоятельствах. Но новичок просто пы-
тается выполнить задание. К несчастью для нас, эк-
земпляр 
AudioPlayer
находится в области глобаль-
ной видимости. Вот так один маленький 
#include
может полностью уничтожить архитектуру, которая 
так тщательно разрабатывалась.
Но если бы экземпляр аудиоплеера не был в об-
ласти глобальной видимости, даже 
#include
в за-
головке не дал бы нужного эффекта. И проблема, 
возникшая на пути юного программиста, намека-
ет ему: эти два модуля не должны видеть друг друга, 
лучше ему поискать другое решение. 
Контролируя 
область видимости экземпляров, вы контролиру-
ете связанность.
Специалисты в области 
информационных тех-
нологий называют функ-
ции, не использующие 
и не изменяющие гло-
бальные данные, «чи-
стыми». Чистые функ-
ции проще для 
понимания, их проще 
компилировать и опти-
мизировать, а также они 
позволяют вам исполь-
зовать различные трюки 
вроде меморизации 
(memoization), когда вы 
сохраняете результаты 
предыдущих вызовов 
функции, чтобы можно 
было их переиспользо-
вать и не повторять вы-
числения при тех же 
входных данных.
Поскольку использо-
вать только чистые 
функции невероятно 
сложно, но их преиму-
щества невероятно со-
блазнительны, специа-
листы в области 
информационных тех-
нологий разработали 
специальные языки про-
граммирования вроде 
Haskell, которые допу-
скают создание 
только
чистых функций.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   74   75   76   77   78   79   80   81   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish