4434


TextBox や Button などのコントロールの命名規則のガイドラインはあるでしょうか。  
参考にできるガイドラインがあれば教えてください。

[オブジェクト
ハンガリー表記法の名前付け規則](http://support.microsoft.com/kb/173738/ja)というのはあったのですが、一覧の内容から推測すると
VB6.0 時代のものと思われます。  
このようなコントロールにプレフィックスを付ける命名方法は、現在では推奨されていないのでしょうか？

### 追記:

MSDNの[名前に関するガイドライン](http://msdn.microsoft.com/ja-
jp/library/ms229002\(v=vs.100\).aspx)に従うと、コントロールは（Windows Formsであれば フォームの
private）[フィールド](http://msdn.microsoft.com/ja-
jp/library/ms229012\(v=vs.100\).aspx)に該当しますので

> フィールド名には Pascal 形式を使用してください。  
>  フィールド名にはプリフィックスを使用しないでください。 たとえば、静的フィールドと非静的フィールドを区別するために、g_ や s_
> を使用しないでください。

が当てはまりそうです。

ですが、本家の StackOverflow
で[プレフィックス記法が推されている場合](https://stackoverflow.com/questions/1246546/best-
practices-for-c-sharp-gui-naming-conventions)もあり、どのような命名スタイルが実用的なのか測りかねています。

[code]

    TextBox txtName     // NG
    TextBox name        // OK
    TextBox nameTextBox // OK
    TextBox uxName      // OK？（ローカル変数と区別したい時に使う？）
    
[/code]

このような理解で良いでしょうか？


CC BY-SA 3.0
2015-01-12T10:08:26.620
4431
2015-01-12T12:17:57.800
2017-05-23T12:38:56.467
-1
3925
question
c# .net wpf winforms
コントロールの命名ガイドライン


.NETでの名前付けの規則は、MSDNに書かれています。  
[一般的な名前付け規則](http://msdn.microsoft.com/ja-
jp/library/ms229045%28v=vs.100%29.aspx)

原則としては、変数名に型名を付けません。  
それには、次の理由が考えられます。

  1. VisualStudioなどの開発環境で型を瞬時に確認できるため、付けなくて良い。
  2. リファクタリングした場合などにプリフィックス、サフィックスと実際の型名が異なり、混乱の原因となる。
  3. 変数名やコントロールの名前で何を表すのか推測できるようにすべきである。


CC BY-SA 3.0
2015-01-12T10:23:56.413
4433
2015-01-12T10:23:56.413
2207
4431
answer


MSDN の .NET Framework 4 向けのドキュメントの中に、「[クラス ライブラリ開発者向けのデザイン
ガイドライン](http://msdn.microsoft.com/ja-
jp/library/ms229042\(v=vs.100\).aspx)」があります。該当箇所は:

  * [大文字の使用規則](http://msdn.microsoft.com/ja-jp/library/ms229043\(v=vs.100\).aspx)
  * [一般的な名前付け規則](http://msdn.microsoft.com/ja-jp/library/ms229045\(v=vs.100\).aspx)
  * [クラスの名前付けのガイドライン](http://msdn.microsoft.com/ja-jp/library/ms229040\(v=vs.100\).aspx)

でしょうか。ハンガリー表記法の時代とはだいぶ変わりましたね...というより「
**[ハンガリー表記法は使用しないでください。](http://msdn.microsoft.com/ja-
jp/library/ms229045\(v=vs.100\).aspx)** 」と念押しされており、大まかに、クラス・メソッド名には
_PascalCasing_ を使用、ローカル変数には、 _CamelCasing_ を使用ということで統一がはかられています。

接頭語についても:

> 通常、省略形や頭字語は使用しません。 これらを使用すると、名前がわかりにくくなります。  
>  ...  
>  識別子名の一部には省略形または短縮形を使用しないでください。  
>  たとえば、`OnBtnClick` ではなく `OnButtonClick` を使用します。  
>  広く受け入れられていない頭字語は使用しないでください。また、必要な場合に限って使用するようにしてください。

と念を押される風で、基本的に名前を短縮する行為が良くないこととして認識されています。

### 追記:

UI 周りの命名については、過去に WinForm 等のプロジェクトに関わっていた [Pete Brown
のブログポスト](http://10rem.net/articles/net-naming-conventions-and-programming-
standards---best-
practices)が参考になります。この記事には、命名ルールについての考察や、ハンガリアン記法が脱落した理由に対する考察が書かれおり、部品クラス・部品を扱うローカル変数に対する命名は、"Controls
on Forms" にまとまっています。また、記事では、同様の内容が書かれた書籍「[.NETのクラスライブラリ設計 (Microsoft.net
Development
Series)](http://www.amazon.co.jp/NET%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E8%A8%AD%E8%A8%88-Microsoft-
net-Development-Krzysztof-Cwalina/dp/4891006765)」を読むことが薦められています。


CC BY-SA 3.0
2015-01-12T10:24:20.713
4434
2015-01-12T11:29:48.920
2015-01-12T11:29:48.920
4978
4978
4431
answer


[クラス ライブラリ開発のデザイン ガイドライン](http://msdn.microsoft.com/ja-
jp/library/ms229042%28v=vs.100%29.aspx)はあくまでパブリックなAPIについてのガイドラインであり、通常は非パブリックフィールドであるコントロールには必ずしも当てはまりません。例としてVisual
Studioで生成されるコントロール名もPascalではなくcamelです。MSとしてはあくまでプロジェクトごとの裁量というスタンスだったかと思います。


CC BY-SA 3.0
2015-01-12T10:45:05.537
4435
2015-01-12T10:45:05.537
5750
4431
answer