<include>, <snippets> і <embed>

На перший погляд, теґи <include> і <snippets> надають можливість зробити те саме, що і вбудовування: ви можете повторно використати частину коду у різних додатках. Отже, у чому відмінність між цими підходами, і як вибрати з них той, яким слід скористатися?

Ключова відмінність між цими концепціями полягає у тому, що придатні до вбудовування додатки є ціліснішими. У них поєднується графічний інтерфейс, код для створення на його основі коду R і сторінка довідки. Include та insert, навпаки, можна використовувати дрібнішими частинами, але за рахунок погіршення модульності структури додатків.

Додатку, до якого вбудовується інший додаток, типово, не потрібні докладні відомості щодо внутрішньої структури вбудованого додатка. Яскравим прикладом цього є додаток plot_options. Додаткам, до яких його вбудовують не потрібні дані щодо усіх параметрів, які можна змінити, або способу їх надання. Це добре, оскільки інакше зміна додатка plot_options могла б призвести до потреби у коригуванні всіх додатків, до яких його вбудовано (а їх доволі багато). І навпаки, include та insert розкривають усі деталі включення та вставлення, отже усі додатки, у яких використовуються ці інструкції, наприклад, повинні містити точні ідентифікатори і використовувати відповідні типи елементів.

Отже, ось просте правило: include та insert є чудовим рішенням, якщо відповідні параметри потрібні лише у доволі обмеженій групі додатків. Вбудовані додатки є ліпшим рішенням, якщо група додатків, до яких планується вбудовування, не є жорстко визначеною, і якщо потрібна модульна структура комплекту додатків. Ще одне просте правило: якщо ви можете розташувати типові фрагменти коду до одного «фрагмента», так і зробіть, і скористайтеся вбудовуванням. Якщо ж для спільних частин доведеться створювати багато невеличких фрагментів коду, скористайтеся <snippets>. Ну, і нарешті: якщо усі додатки надають дуже подібні функціональні можливості, ймовірно, варто скористатися include та insert. Якщо ж додатки, по суті, мають один або два спільні «модулі», слід користуватися вбудовуванням.