À primeira vista, <include> e <snippets> oferecem funcionalidades bastante semelhantes a embedding: Permitem reutilizar partes do código entre plugins. Então, qual é a diferença entre essas abordagens e quando usar cada uma?
A principal diferença entre esses conceitos é que os plugins incorporáveis são um pacote mais compacto. Eles combinam uma GUI completa, código para gerar código R a partir dela e uma página de ajuda. Em contraste, os métodos include e insert permitem um controle muito mais preciso, mas com menor modularidade.
Ou seja, um plugin que incorpora outro plugin normalmente não precisa saber muito sobre os detalhes internos do plugin incorporado. Um ótimo exemplo é o plugin plot_options. Plugins que desejam incorporá-lo não precisam necessariamente conhecer todas as opções fornecidas, ou como elas são fornecidas. Isso é bom, pois, caso contrário, uma alteração no plugin plot_options poderia tornar necessário ajustar todos os plugins que o incorporam (e muito). Em contraste, os plugins include e insert expõem todos os detalhes internos, e os plugins que os utilizam precisarão -- por exemplo -- saber os IDs exatos e talvez até mesmo o tipo dos elementos usados.
Portanto, a regra prática é a seguinte: incluir e inserir são ótimos se as opções relevantes forem necessárias apenas para um grupo claramente limitado de plugins. Plugins incorporados são melhores se o grupo de plugins para os quais eles podem ser úteis não estiver claramente definido e se a funcionalidade puder ser facilmente modularizada. Outra regra prática: se você puder colocar as partes comuns em um único “bloco”, faça isso e use a incorporação. Se você precisar de muitos pequenos trechos para definir as partes comuns, use <snippets>. Uma última maneira de ver isso: se todos os plugins fornecerem funcionalidades muito semelhantes, incluir e inserir provavelmente é uma boa ideia. Se eles compartilharem apenas um ou dois “módulos” em comum, a incorporação provavelmente é melhor.