コンピュータプログラミングにおいて、スニペットとは、コードを書くプロセスの一部として保存され、後でより大きなコードベースに挿入される比較的小さなソースコードのことです。コードエディタや統合開発環境(IDE)などの開発ツールの中には、開発者がコードを入力する代わりに断片を挿入できるようにすることで生産性を向上させるスニペット管理機能を提供するものがあります。[ 1 ]
関数などの抽象化構造とは対照的に、スニペットはコピー&ペーストプログラミングの一種であり、格納されたテンプレート テキストを展開して結果をソース コードに挿入するマクロ操作です。[ 2 ]スニペットの挿入は、マクロ定義を参照するのではなく展開したものを挿入するという点を除けば、プリプロセッサ マクロに似ています。挿入後にスニペットを変更しても、プリプロセッサ マクロの定義を変更した場合のようにコードに影響はありません。このため、関数プロトタイプ、制御構造、ライブラリ インポートなどの比較的単純なコードにのみスニペットを使用するのがベスト プラクティスです。スニペットは通常、抽象化が利用できない場合 (つまり、プログラミング言語でサポートされていない場合) または望ましくない場合 (つまり、実行時のオーバーヘッドのため) に使用されます。
スニペット管理機能を提供する開発ツールは、通常、保存されたテンプレートのカタログを管理する機能を備えており、表示、追加、削除、編集、名前変更などの操作が可能です。スニペット管理をサポートする代表的なツールには、Eclipse、NetBeans、Visual Studio、Dreamweaverなどがあります。スニペットの補完機能やプレースホルダー置換機能は、 bashやPowerShellなどのシェルで使用できます。
統合開発環境は、スニペットをサポートする言語サーバープロトコルを実装することで、スニペットをサポートすることが多い。[ 3 ]

スニペットは、使用時のインタラクティブ性に基づいて分類することができ、以下のようなものがあります。
プレースホルダーとは、挿入時に置き換えられるコードスニペットの一部です。一般的に、プレースホルダーには特別なマークアップ構文があり、開発ツールが各プレースホルダーの境界を識別して置き換えることができます。ツールによっては、ユーザーが値を置き換えることができるグラフィカルユーザーインターフェース(GUI)を提供するものもあります。
プレースホルダーは通常、スニペット内で特別な構文で区切られ、名前または番号で識別されfirst_nameます。次のスニペットテキストでは、識別されたプレースホルダー、 、last_name、 およびが使用されていますitem。
こんにちは{% first_name %} {% last_name %}さん、お客様の{% item %}の発送準備が整いました。お受け取りいただけます。ありがとう、{% first_name %} !プレースホルダーを指定すると、スニペット内で同じ置換値を複数回使用できます。前の例では、プレースホルダーがfirst_nameその一例です。
変換機能を使用すると、プレースホルダーに指定された1つ以上の値を、プログラム可能なスニペット内のテキストの他の場所に複製して変換するように指定できます。たとえば、スニペットのある箇所に文書タイトルを指定し、その文書タイトルを他の場所にも繰り返すように指定できます。その際、最初の箇所はすべて大文字、それ以降の箇所はすべて小文字にすることができます。
2つの変数の値を交換するアルゴリズムは、x次yのようにコード化できます。
温度 = x x = y y = 温度
このコードスニペットをより使いやすくするために、変数名は以下のようにプレースホルダーに置き換えられます。
テンポ = 1ドル 1ドル=2ドル 2ドル=一時的
スニペットが挿入されると、開発ツールはプレースホルダー名を置き換えるためのより具体的な名前を開発者に求める場合があります。 および の場合foo、bar挿入されるコードは次のとおりです。
temp = foo foo = バー バー=温度
後でスニペットが変更された場合、__tempたとえば の代わりにを使用するように変更された場合temp、既存のコードは自動的に新しいスニペット定義を使用しませんが、後続の挿入では使用されます。
スニペットを使用する一般的な代替手段として関数がありますが、関数には、定義を変更すると利用者に影響を与えるという利点があります。一方、スニペットを変更しても、既存のスニペットの挿入箇所は変更されません。オブジェクト指向プログラミングや関数型プログラミングなど、多くの開発手法では重複コードの回避が重視されますが、これはスニペットの使用とは相反するものです。
別の選択肢としては、C言語や多くの関連言語で利用可能なプリプロセッサマクロがあります。
各C&Pインスタンスについて、コピーされたコードスニペットとコードベースの他の場所にあるコードとの関係も記録しました。