<include> och <snippets> mot <embed>

Vid första ögonkastet tillhandahåller <include> och <snippets> funktionalitet som är ganska lik inbäddning: De möjliggör återanvändning av vissa delar av koden mellan insticksprogram. Vad är då skillnaden mellan tillvägagångssätten, och när ska man använda vilket?

Den avgörande skillnaden mellan koncepten är att inbäddningsbara insticksprogram utgör ett tätare kopplat paket. De kombinerar ett fullständigt grafiskt användargränssnitt, kod för att generera R-kod från det och en hjälpsida. I motsats till det, tillåter include och insert mycket finkornigare kontroll, men till priset av mindre modularitet.

Det vill säga, ett insticksprogram som inbäddar ett annat insticksprogram behöver typiskt inte veta mycket om det inbäddade insticksprogrammets interna detaljer. Ett utmärkt exempel är insticksprogrammet plot_options. Insticksprogram som vill inbädda det behöver inte nödvändigtvis känna till alla alternativ som tillhandahålls, och hur de tillhandahålls. Det är bra, eftersom annars skulle en ändring av insticksprogrammet plot_options göra det nödvändigt att justera alla insticksprogram som inbäddar det (många). I kontrast till det, exponerar include och insert alla de interna detaljerna, och insticksprogram som använder dem, måste exempelvis känna till exakt id och kanske till och med typ för de använda elementen.

Sålunda är tumregeln följande: include och insert är utmärkta om de relevanta alternativen bara behövs för en tydligt begränsat grupp av insticksprogram. Inbäddade insticksprogram är bättre om gruppen av insticksprogram som det kan vara användbart för inte är klart definierad, och om funktionaliteten enkelt kan modulariseras. En annan tumregel: om det går att placera de gemensamma delarna i ett enda block, gör det och använd inbäddning. Om det behövs många små delar för att definiera allt gemensamma, använd då <snippets>. Ett sista sätt att se på det: Om alla insticksprogram tillhandahåller mycket liknande funktionalitet, är include och insert troligen en god idé. Om de bara delar en eller två gemensamma moduler är inbäddning sannolikt bättre.