Информационный эксперт (Information Expert)¶
Information Expert говорит: ответственность стоит отдавать тому объекту, у которого уже есть нужные данные для ее выполнения.
Опора на ООП¶
Information Expert опирается на инкапсуляцию и высокую связность: логика живет рядом с данными, для которых она естественна.
Что показывает пример на 1С¶
Documents.SalesOrderсам считает итог по своей табличной части.- Клиентский код не вытаскивает строки документа наружу и не пересчитывает сумму во внешнем модуле.
- Ответственность остается у объекта, который и так владеет нужными данными.
Пример¶
Где полезен в 1С¶
- для расчетов по данным документа, формы или регистра;
- для проверок, которые напрямую опираются на внутреннее состояние объекта;
- когда внешний модуль начинает тянуть слишком много чужих данных только ради одной операции.
Когда принцип применяют неправильно¶
- когда в объект заталкивают логику, требующую много внешних зависимостей;
- когда данные распределены по нескольким подсистемам и одного "эксперта" просто нет;
- когда ради формального следования принципу объект превращается в перегруженный модуль.