IntelliSense コード スニペットの最適な使用方法
IntelliSense コード スニペットの各コードは、タスクを実行するための基本的な方法のみを示しています。 ほとんどのアプリケーションでは、アプリケーションに合うようにコードを変更する必要があります。 このトピックでは、コードに対して加える必要のあるいくつかの一般的な変更点について説明します。
例外処理
通常、コードに Try…Catch ブロックが含まれている場合は、コードですべての例外をキャッチして再スローしています。 これは、必ずしもプロジェクトに最適な方法でない可能性もあります。 各例外に対する応答の方法はいくつかあります。 考えられる処理を以下に示します。
必要な処理に対応するコードを、各 Catch ブロックに追加します。
何もしないよう、Catch ブロックに含まれているコードを削除します。 こうすると、アプリケーションはそのエラーを無視します。 この方法をとった場合、アプリケーションがエラーから適切に回復する可能性は低くなります。
状況の修復を試みるために、ユーザーに追加的な入力を求めます。
例外がスローされる前にアプリケーション データに加えられた変更を、Try ブロックの実行の間に元に戻します。
例外をスローして呼び出し元のメソッドに戻します。
当該のアプリケーション用に定義した例外をスローします。
当該の例外に対する Catch ステートメントを削除し、呼び出し元のメソッドに処理させます。 この方法は、実行するタスクに関係ない例外の場合に特に適しています。
Catch ブロックをコードに追加し、処理の対象とする特定の型の例外をキャッチします。
Finally ブロックを追加して、Try ブロックおよび Catch ブロックの後で実行するコードを追加します。
文字列の置換
コードに文字列値が含まれている場合、通常は "c:\filename.txt" などの固有の文字列で指定されています。 このようにハードコーディングされた文字列は、デモンストレーションのためには有用ですが、アプリケーションで使用する正しい文字列ではないのが普通です。 アプリケーション内で文字列を使用している可能性があるのは、次のような部分です。
ファイルの位置
コードの大半のファイル名は、My Documents または c:\ にあるものとして示されています。 ファイルの位置を変更するときには、次のような点を考慮する必要があります。
アクセス可能な場所を見つけます。 ユーザーによっては、コンピューターの \Program Files フォルダーにアクセスできない場合があるため、アプリケーション ファイルと一緒にファイルを格納してもうまくいかないことがあります。
安全な場所を見つけます。 ファイルをルート フォルダー (c:\) に格納するのは安全ではありません。 アプリケーション データについては、\Application Data フォルダーの使用をお勧めします。 個々のユーザー データについては、アプリケーションで \My Documents フォルダーに各ユーザー用のファイルを作成する方法が使用できます。
有効なファイル名を使用します。 OpenFileDialog コンポーネント (Windows フォーム) および SaveFileDialog コンポーネント (Windows フォーム) を使用すると、無効なファイル名の可能性を減らせます。 ユーザーがファイルを選択してから、コードでそのファイルを操作するまでの間に、ファイルが削除される可能性がある点に注意してください。 また、ユーザーがそのファイルへの書き込みのアクセス許可を持たない可能性もあります。
コントロールとコンポーネント
コードで参照されているコントロール名およびコンポーネント名では、既定のデザイナー名 (Button1 や TreeView1 など) が使用されているのが普通です。 この場合、示されているコントロールの型は明確になりますが、アプリケーションで使用する名前とは異なることがあります。
コードの欠落
スニペットによっては、Try…Catch ブロックなど、空の言語構造のみが示されている場合があります。 また、IsValid などの検証変数が既定で True に設定されていることもあります。 提供されているコードはコンパイルおよび実行できますが、何も機能を持ちません。 こうした例では、タスクに応じたコードを追加する必要があります。
セキュリティ
スニペットがどの程度安全かは、ソース コード内での使用場所と、コード内に組み込んだ後の修正方法に応じて左右されます。 次の一覧は、考慮が必要な部分をいくつか示したものです。
ファイル アクセスとデータベース アクセス
コード アクセス セキュリティ
リソースの保護 (イベント ログ、レジストリなど)
秘密のデータの格納
入力の検査
スクリプトへのデータの引き渡し
詳細については、「スニペットの使用に関するセキュリティ上の考慮事項」および「アプリケーションの保護」を参照してください。