クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
Visual Basic
 Visual Basic のコーディング規則
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
Visual Basic: サンプル
Visual Basic のコーディング規則

以下のガイドラインは、サンプルおよびドキュメントの開発で Microsoft が使用しているものです。Visual Basic 言語仕様では、コーディング規則は定義されていません。

  • コーディング規則があると、コードの見た目が統一されるため、コードを読むときにレイアウトではなく内容に専念できます。

  • 規則がある方が、コードをすばやく理解できます。以前の経験に基づいて予測がつくようになるからです。

  • 規則がある方が、コードのコピー、変更、およびメンテナンスが簡単になります。

  • 規則を見ると、Visual Basic の "ベスト プラクティス" がわかります。

説明

名前付け規則

  • 名前付けのガイドラインについては、「クラス ライブラリ開発のデザイン ガイドライン」を参照してください。

  • Visual Studio デザイナ ツールで作成されるオブジェクトの名前は、ガイドラインに則るように変更する必要はありません。

  • Imports ステートメントを追加するのではなく、名前空間修飾を使用します。名前空間が既定でプロジェクトにインポートされた場合、コードを完全修飾する必要はありません。コピーおよび貼り付けされたときに、IntelliSense により修飾なしで実行されるからです。長い行のコードを改行して読みやすくするときには、修飾名は "." の後で改行できます。以下に例を示します。

    Dim collection As System.Diagnostics. _
           InstanceDataCollectionCollection
  • "My" または "my" を変数名の一部として使用しないようにします。My オブジェクトとの混同を招くからです。

レイアウト規則

コードの構造を強調する書式が使用され、コードが読みやすくなっているのが、優れたレイアウトです。

  • 再フォーマット機能を使用して、既定の設定 (スマート インデント、4 文字インデント、タブを空白として保存) でコードを書式設定します。詳細については、「[VB 固有] ([オプション] ダイアログ ボックス - [テキスト エディタ] - [Basic])」を参照してください。

  • 1 つの行には 1 つのステートメントのみを記述します。":" は使用しないようにします。

  • 1 つの行には 1 つの宣言のみを記述します。

  • 継続行はタブ 1 つ分インデントします。

  • メソッド定義とプロパティ定義の間に少なくとも 1 行の空白行を追加します。

コメント規則

  • コード行の末尾にコメントを記述しないようにします。コメントは別個の行に記述します。

  • 英語でコメントを記述する場合、コメント テキストの始まりは英大文字を使用します。

  • コメント テキストの終わりは句点で終了します。

  • コメント デリミタ (') とコメント テキストの間に空白を 1 つ挿入します。

    ' Here is a comment.
  • アスタリスク (*) を整形したブロックでコメントを囲まないようにします。

プログラムの構造

  • Main メソッドを使用するときには、新しいコンソール アプリケーションの既定の構造を使用し、コマンド ライン引数には My を使用します。

    Sub Main()
        For Each argument As String In My.Application.CommandLineArgs
            ' Add code here to use the string variable.
        Next
    End Sub

言語ガイドライン

文字列型 (String)

  • 文字列の連結には & を使用します。

    MsgBox("hello" & vbCrLf & "goodbye")
  • ループ内での文字列の追加には StringBuilder オブジェクトを使用します。

    Dim longString As New System.Text.StringBuilder
    For count As Integer = 1 To 1000
        longString.Append(count)
    Next

Unsigned データ型

  • メモリに余裕がない場合を除いては、unsigned 型ではなく Integer を使用します。

配列

  • 宣言行で配列を初期化するときには、次のような短い構文を使用します。

    Dim letters() As String = {"a", "b", "c"}

    次のような記述は避けます。

    Dim letters() As String = New String() {"a", "b", "c"}
  • 配列指定子は、次のように、型ではなく変数に指定します。

    Dim letters() As String = {"a", "b", "c"}

    次のような記述は避けます。

    Dim letters As String() = {"a", "b", "c"}
  • 基本データ型の配列の宣言と初期化では、次のような { } 構文を使用します。

    Dim letters() As String = {"a", "b", "c"}

    次のような記述は避けます。

    Dim letters(2) As String
    letters(0) = "a"
    letters(1) = "b"
    letters(2) = "c"

With キーワードの使用

1 つのオブジェクトに対する呼び出しが続く場合には、With キーワードの使用を検討します。

ループ変数は For または For Each ステートメント内で宣言

  • 例 :

    For count As Integer = 0 To 2
        MsgBox(names(count))
    Next
  • 例 :

    For Each name As String In names
        MsgBox(name)
    Next

Try...Catch の使用

  • Dispose メソッドを実装するオブジェクトでは、常に Try...Catch を使用します。

  • On Error Goto は使用しないようにします。

Using ステートメントの使用

Try...Catch ステートメントを使用する場合で、Finally ブロックのコードが Dispose の呼び出しのみのときには、Using を代わりに使用します。

IsNot キーワード

Not ... Is Nothing よりは IsNot キーワードを使用します。

フォームの既定のインスタンス

My.Forms.Form1.ShowDialog ではなく Form1.ShowDialog を使用します。

New キーワード

  • 短い形式のインスタンス化を使用します。

    Dim employees As New Collection() 

    次のような記述は避けます。

    Dim employees As Collection = New Collection()
  • パラメータなしのコンストラクタを使用してから、With を使用してプロパティを設定します。

    Dim orderLog As New EventLog()
    With orderLog
        .Log = "Application"
        .Source = "Application Name"
        .MachineName = "Machine Name"
    End With

イベント処理

  • AddHandler ではなく Handles を使用します。

    Private Sub MenuItem1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MenuItem1.Click
  • AddressOf を使用し、デリゲートの明示的なインスタンス化は避けます。

    Dim closeItem As New MenuItem("Close", AddressOf MenuItem1_Click)
    Me.MainMenu1.MenuItems.Add(closeItem)
  • イベントを定義するときには、短い構文を使用し、デリゲートの定義はコンパイラに任せます。

    Public Event WhatHappened(ByVal source As Object, _
        ByVal e As WhatHappenedEventArgs)

共有メンバの使用

Shared メンバの呼び出しにはクラス名を使用し、インスタンス変数からは行わないようにします。

MsgBox 関数

MessageBox.Show または Console.WriteLine の代わりに MsgBox を使用します。

My 名前空間の使用

.NET Framework クラス ライブラリや Visual Basic ランタイム ライブラリよりも My の機能を使用します。

Visual Basic ランタイム ライブラリのメンバの使用

.NET Framework クラス ライブラリよりも Visual Basic ランタイム ライブラリを使用します。

サンプルのガイドライン

全般

  • クラス ライブラリ開発者向けのデザイン ガイドライン (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconnetframeworkdesignguidelines.asp) のデザイン ガイドラインに従います。

  • MsgBox 呼び出しではプロンプトとタイトルを指定します。

  • 必要に応じてリソース ファイルを使用します。

  • 各ファイルまたはプロジェクト設定で Option Strict On を指定します。

  • コンパイルではすべての警告をオンにします。

  • ClassStructure、または Interface は、1 つのファイル内で 1 つのみ定義します。

  • ファイルの保存には既定のエンコーディングを使用します。

ローカリゼーション

  • 可能な場合は AutoSize プロパティを使用します。

  • コントロールを非表示にしたり重ねたりしないようにします。

  • 複数のコントロールを整列して 1 つの文を作成するのは避けます。

  • ある文字列からいくつかの文字を取り去ることによって別の文字列を組み立てるのは避けます。

  • カルチャに依存しないグラフィックスを使用します。

  • フォントは Tahoma または MS Sans Serif のみを使用します。

ユーザー補助

  • カラー ピッカー ダイアログ ボックスの [システム] タブにある色を使用します。

  • すべてのメニュー、ラベル、ボタンなどにおいて、アクセラレータを使用します。

  • コントロールのプロパティを、次の表に示すように設定します。

プロパティ 設定値

AccessibleDescription

コントロールの説明。

AccessibleName

コントロールの名前。

AccessibleRole

既定値。または、コントロールに別の役割を割り当てる場合は、このプロパティを変更します。

TabIndex

論理的な順序に設定します。

Text

クリック可能なコントロールすべてに対し、キーボード アクセス キー (ショートカット) を設定します。

Font size

既定値、または 10 ポイント以上に設定します。

Forecolor

既定値

Backcolor

既定値

BackgroundImage

既定値

セキュリティ

安全なコーディングのガイドライン」のガイドラインに従います。

参照

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Disposeメソッドを実装するオブジェクトのTry...Catchの部分について      びゆう   |   編集   |   履歴の表示

> Dispose メソッドを実装するオブジェクトでは、常に Try...Catch を使用します。

DisposeとなるとTry...Finallyではないかと思います。http://blogs.wankuma.com/jeanne/archive/2007/03/22/68326.aspx

フラグの設定 ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker