Re[3]: Как наиболее корректно работать с глобальными данными
От: Хон Гиль Дон Россия  
Дата: 03.07.15 14:00
Оценка:
Здравствуйте, Abyx, Вы писали:


Ш>>Это глупость. Например, хип есть глобальный объект и ты им (как правило неявно) пользуешься в большинстве программ.

A>во многих библиотеках делают возможность задать свои функции аллокации/деаллокации, и хип напрямую не используется.

Ага, одна пара маллок/фри на всю либу. То есть глобальные. Последовательного применения dependency injection, шоп например в каждый объект тащить аллокатор, логгер и конфиг, я в реальном вменяемом коде ни разу пока не видел. Не, я допускаю, что области где они сплошь требуются, бывают, но советовать это по умолчанию по-моему перебор.

Ш>>То же самое относится к целому ряду объектов, например стандартные потоки ввода-вывода в консольных приложениях.

A>тожесамое. если где-то так написано, ты не можешь по-нормальному реюзнуть такой код в GUI программе.

Чтобы с этим не было проблем, достаточно обеспечить подключаемые реализации глобальных объектов с разумными умолчаниями. Например, логгер никуда не выводит, аллокатор вызывает CRT'шные malloc/free, конфиг возвращает какие-то дефолты. А DI уместнее оставить для случаев, где неявных границ нет, а разное поведение требуется.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.