23

VB.NET でプライベート フィールドに名前を付けるための公式の規則はありますか? たとえば、「Foo」というプロパティがある場合、通常はプライベート フィールドを「_Foo」と呼びます。これは、公式ガイドラインで眉をひそめているようです:

「フィールド名にプレフィックスを使用しないでください。たとえば、静的フィールドと非静的フィールドを区別するために g_ または s_ を使用しないでください。」

C# では、プライベート フィールド 'foo'、プロパティ 'Foo' を呼び出し、コンストラクターでプライベート フィールドを 'this.foo' として参照できます。VB.NET は大文字と小文字を区別しないため、これを行うことはできません。何か提案はありますか?

4

10 に答える 10

21

VB ではまだプライベート フィールドに _ プレフィックスを使用しているため、_foo をプライベート フィールドとして、Foo をプロパティとして使用します。私はこれを c# に対しても行います。一般に、「正しい」方法はありません (非常に悪い方法もいくつかあります) ため、「正しい方法は何か」にあまり巻き込まれることはありませんが、それを一貫して行うことに関心があります。

結局のところ、一貫性を保つことで、「正しい」規則を使用するよりも、コードがはるかに読みやすく、保守しやすくなります。

于 2008-08-11T09:45:27.967 に答える
7

これは個人的な好みですが、ある程度区別することは広く支持されています。C# でも、広く使用されている規則は 1 つもないと思います。

ジェフ・プロサイス言う

個人的な好みの問題として、プライベート フィールドの前に [C# で] アンダースコアを付けるのが一般的です。この規則は .NET フレームワークでかなり頻繁に使用されますが、全体で使用されるわけではありません。

から 。NET Framework 設計ガイドライン第 2 版、73 ページ。

ジェフリー・リヒター言う

すべてのフィールドをプライベートにし、インスタンス フィールドの前に「m_」を付け、静的フィールドに「s_」を付けます [C# の場合]

から 。NET Framework Design Guidelines 2nd Edition 47 ページ。Anthony Moore ( BCL チーム) も、"m_" と "s_" を使用することは考慮に値すると考えています (48 ページ)。

于 2010-06-10T12:10:12.510 に答える
3

VB.NET 4.0 では、次のように Property 宣言の getter と setter を明示的に記述する必要がないことは、ほとんどの人が知っているでしょう。

Public Property Foo As String
Public Property Foo2 As String

VB は、_Foo および _Foo2 と呼ばれるプライベート メンバー変数を自動的に作成します。Microsoft と VS チームは _ 規則を採用しているように見えるので、問題はありません。

于 2011-08-29T20:55:31.463 に答える
3

公式のガイドラインは、まさにガイドラインです。あなたはいつでもそれらを回避することができます。そうは言っても、通常、 C# と VB.NETの両方で、フィールドの前にアンダースコアを付けます。この規則は非常に一般的です (そして明らかに、公式ガイドラインは無視されています)。

プライベート フィールドは、"me" キーワードなしで参照できます ("this" キーワードは C# 用です:)

于 2008-08-11T09:46:46.480 に答える
3

リンクした設計ガイドラインでは、静的なパブリックおよび保護されたフィールドにのみ適用されると具体的に述べています。設計ガイドラインは、主にパブリック API の設計に焦点を当てています。プライベートメンバーをどうするかはあなた次第です。私は肯定的ではありませんが、コンパイラが CLS 準拠をチェックするときにプライベート メンバーが考慮されないことは比較的確信しています。 _ 文字があなたのライブラリを使用しようとすることを許可しませんか?" メンバーが非公開の場合、答えは "何もありません。ユーザーはこれらのメンバーを使用する必要はありません。" しかし、メンバーが公開の場合は問題になります。 )

そうは言っても、エコーチェンバーに追加して、何をするにしても一貫性を保つことが重要であることを指摘します. 私の雇用主は、C# と VB の両方のプライベート フィールドにプレフィックス _ を付けることを義務付けています。私たち全員がこの規則に従っているため、他の誰かが作成したコードを簡単に使用できます。

于 2008-08-28T18:36:15.347 に答える
2

私はまだプライベートフィールドにVBの_プレフィックスを使用しているので、プライベートフィールドとして_fooを使用し、プロパティとしてFooを使用します。私はこれをc#でも行い、ほとんどすべてのコードでこれを行います。一般的に、私は「正しい方法は何か」にとらわれることはありません。なぜなら、実際には「正しい」方法はなく(非常に悪い方法もいくつかあります)、一貫してそれを行うことに関心があるからです。

明確で一貫性を保つために、「_」よりも優れたものは見つかりませんでした。短所は次のとおりです。

私はエディターでそれらをオフにすることで線を回避し、CLSコンプライアンスについてあまり考えないようにしています。

于 2008-08-12T15:57:52.753 に答える
2

公式の命名規則はないと思いますが、Microsoft が Microsoft.VisualBasic dll で m_ を (リフレクター経由で) 使用していることを確認しました。

于 2008-08-11T09:48:17.100 に答える
0

プライベートフィールドにはアンダースコアプレフィックスを使用することを好みます。メソッドパラメータには小文字の最初の文字を使用します。メソッドの小文字のキャメルケースパラメーターを使用するというガイドラインに従います。これは、クラスのAPIの一部であるため、プライベートフィールドの名前付けよりも重要であると考えています。。例えば

Public Class Class1

    Private _foo As String
    Public Property Foo() As String
        Get
            Return _foo
        End Get
        Set(ByVal value As String)
            _foo = value
        End Set
    End Property

    Public Sub New(ByVal foo As String)
        _foo = foo
    End Sub

End Class

このパターンを使用すると、C#またはVB.NETのプライベートフィールドおよびコンストラクターパラメーターと名前の競合が発生しなくなります。

于 2008-08-11T19:00:39.140 に答える
0

私は@lomaxxに同意します。正しい慣習を持つことよりも、チーム全体で一貫していることが重要です。

それでも、コーディング規約のアイデアとガイダンスを得るのに適した場所は次のとおりです。

  1. FrancescoBalenaによるMicrosoftVisualBasicおよびVisualC#開発者向けの実用的なガイドラインとベストプラクティスは、これらの問題の多くに対処する優れた本です。
  2. IDesignコーディング標準(C#およびWCF用)
  3. .NET Frameworkソースコード(VS2008)
于 2008-08-11T13:05:11.790 に答える
0

最も重要なのは、どのスタイルを使用するかではなく、一貫性があることです。

そうは言っても、プライベート フィールドの新しい MS/.NET スタイルは _fooVar (アンダースコアの後にキャメル ケースの名前が続く) になる傾向があります。

于 2008-09-05T18:11:53.670 に答える