Smalltalk в примерах/Глобальные переменные: различия между версиями

Нет описания правки
Я начну со стандартного предупреждения о том что глобальные переменные должны использоваться редко, если вообще использоваться, и поэтому большынствобольшинство информацыи должно храниться в переменных экзэмпляра или передаваться как аргументы метода. Учитывая вышэвыше сказанное, глобальная информацыяинформация и объекты используются определённым образом. Ты можэшможешь использовать константы которые часто используются твоей системой, или ты можэшможешь использовать глобальные объекты например объекты конфигурацыиконфигурации или trace log object. Давай рассмотрим несколько техник которые могут использоваться для данной цэлицели. Мы будем использовать два примера: конфигурацыонныйконфигурационный объект и время простоя.
 
<!--
 
==Глобальный словарь==
Наиболее простой техникой является помещение глобального объект в системный словарь называемый Smalltalk как только объект в Smalltalk к нему можно обратиться из любого места. Например, у тебя можэтможет быть код делающий:
<!--
The most basic technique is to put global objects in the system dictionary named Smalltalk since objects in Smalltalk can be referenced from anywhere. For example, you might have code that does:
-->
Smalltalk от: #Timeout поместить: 20.
Smalltalk от: #КонфигурацыяКонфигурация поместить: МояКонфигурацыяМояКонфигурация новый.
Я не рекомендую использовать Smalltalk для глобальных переменных программы из за тавотого что евоего очень интэнсивноинтенсивно использует система Smalltalk (например, он содержытсодержит все классы системы, и глобальные переменные такие как Транскрипт, ПроцэссорПроцессор, и ScheduledControllers). Я предпочитаю не загромождать Smalltalk объектами программы из за риска конфликта имён.
<!--
I recommend against using Smalltalk for application globals because it's used heavily by the Smalltalk
==Pool словарей==
 
Следующая техника это использование PoolСловаря. PoolСловарь содержытсодержит объекты к которым ты хочешхочешь иметь глобальный доступ в твоей программе. Хорошая особенность PoolСловаря это то что класс должэн зарегистрировать свой интерес к нему до его использования, таким образом тебе можно точно amount of scoping. Способ которым класс регистрирует свой интерес это имя PoolСловаря в соответствующей строке в определении класса. (---) В следующем примере, я назвал его МойPoolСловарь.
 
<!--
категория: 'MyStuff'
 
До того как ты напишэшнапишешь код ты должэндолжен сделать две вешивещи. Первое, до того как ссылаться на PoolСловарь в твоём определении класса тебе надо сделать имя PoolСловаря универсально известным путём его помещения в словарь Smalltalk. Чтобы сделать это выполни следующую строку. Заметь что мы используем Словарь а не IdentityСловарь. Потому что из за способа реализацыи IdentityСловаря он не работает как PoolСловарь.
 
<!--
Анонимный участник