Довідковий матеріал

Перевизначення спільних модулів в умовах ієрархії бібліотек

Під час розробки кількох бібліотек, що перебувають на підтримці одна в одної, слід мінімізувати трудомісткість оновлення коду перевизначуваних спільних модулів у кожній із бібліотек. Для цього рекомендується використовувати таку методику:

Багаторівнева система бібліотек, у якій базовий модуль послідовно передає виклик верхнім рівням, приховуючи деталі реалізації.

Методична рекомендація (корисна порада)

Під час розробки кількох бібліотек, що перебувають на підтримці одна в одної, слід мінімізувати трудомісткість оновлення коду перевизначуваних спільних модулів у кожній із бібліотек. Для цього рекомендується використовувати таку методику:

1. У бібліотеці нижнього рівня ієрархії (найбазовішій) оголошується перевизначуваний модуль за загальними правилами, викладеними вище.
Наприклад: БазоваБібліотекаПеревизначуваний.

2. У бібліотеках вищого рівня реалізація процедур і функцій перевизначуваного модуля базової бібліотеки за потреби може бути доповнена. При цьому в перевизначуваному модулі розміщується не сама реалізація (її код), а лише один виклик.

Наприклад, у спільному модулі БазоваБібліотекаПеревизначуваний у бібліотеці верхнього рівня «Базова бібліотека» реалізація фактично розміщується в модулі МодульБазовоїБібліотеки:

Процедура НалаштуванняІнтерфейсу(Знач ПараметриРоботи) Експорт
	
	// Початок: Базова бібліотека
	МодульБазовоїБібліотеки.НалаштуванняІнтерфейсу(Знач ПараметриРоботи);
	// Кінець: Базова бібліотека
	
КінецьПроцедури

у цьому ж спільному модулі БазоваБібліотекаПеревизначуваний у наступній бібліотеці верхнього рівня «Бібліотека другого рівня»:

Процедура НалаштуванняІнтерфейсу(Знач ПараметриРоботи) Експорт
	
	// Початок: Базова бібліотека
	МодульБазовоїБібліотеки.НалаштуванняІнтерфейсу(Знач ПараметриРоботи);
	// Кінець: Базова бібліотека
	
	// Початок: Бібліотека другого рівня
	МодульБібліотекиДругогоРівня.НалаштуванняІнтерфейсу(Знач ПараметриРоботи);
	// Кінець: Бібліотека другого рівня
	
КінецьПроцедури

і т. д.

3. Таким чином, у кінцевій конфігурації-споживачі реалізація перевизначуваного модуля має вигляд:

Процедура НалаштуванняІнтерфейсу(Знач ПараметриРоботи) Експорт
	
	// Початок: Базова бібліотека
	МодульБазовоїБібліотеки.НалаштуванняІнтерфейсу(Знач ПараметриРоботи);
	// Кінець: Базова бібліотека
	
	// Початок: Бібліотека другого рівня
	МодульБібліотекиДругогоРівня.НалаштуванняІнтерфейсу(Знач ПараметриРоботи);
	// Кінець: Бібліотека другого рівня
	
	// а тепер виконуємо налаштування так, як це потрібно нашій конфігурації
	// ...
	
КінецьПроцедури

Такий підхід дає змогу

  • приховати від бібліотек верхнього рівня та конфігурацій-споживачів деталі реалізації бібліотек нижчого рівня, що мінімізує ризик помилки під час оновлення коду перевизначуваного спільного модуля;
  • але водночас, у загальному випадку, залишає можливість вибору: скористатися нею або відмовитися від неї.
Записатися телефоном