20

私たちは、開発チームで使用したいデザイン ガイドラインを作成する過程にあり、ASP.NET コントロールの命名方法について今日議論を始めました。私たちの良き友人、Label、TextBox、Button などについて話しています。

投票した次の 3 つの可能性を考え出しました: (例は、FirstName を入力/表示するための TextBox です)。

  1. コントロール タイプをコントロール ID の接尾辞として追加します: [FirstName _TextBox] または [FirstName _tbx]
  2. コントロール タイプをプレフィックスとしてコントロール ID [tbxFirstName] に追加します。
  3. オプション 2 [lblTextBox] のように、コントロールの ID を FirstName に設定し、関連するフィールド (テキスト ボックスのラベルやバリデータなど) に名前を付けます。

最終的にオプション 2 を使用することにしました。オプション 1 ほど冗長ではなく、コントロールの名前の前にそれがどのコントロールであるかを指定するのが気に入っています。

私の質問は、マイクロソフトがこれらのプレフィックスのガイドラインをリリースしたかどうか、または私たちの決定についてコメントがあるかどうかです。

4

18 に答える 18

31

ページに追加するときに Visual Studio が "TextBox1" を追加する理由は、Microsoft がユーザーの使用目的を知る方法がないためです。「Control1」という名前は、任意の数のコントロールになる可能性があるため、混乱を招く可能性があります。

Microsoft は、オブジェクト指向の命名規則に関する一般的なガイダンスを提供していますが、特に UI コントロールの命名についてはガイダンスを提供していません。UI コントロールは最終的にはコードで使用される変数であるため、他の変数と同じ規則に従う必要があります。つまり、ハンガリー語表記のプレフィックスは使用しません。

主な理由は...

  • コントロールのタイプがテキストボックスからリストボックスに変わる可能性があり、関連するすべてのコードを修正する必要があります (前述)。
  • コードは、コントロールの内容にもっと関心を持ち、コントロールの種類にはあまり関心を持たないようにする必要があります。コントロールのタイプに関心がある場合、特定の機能に依存するようになり、カプセル化を破ることになります。ほとんどまたはまったくコードを変更することなく、コントロールを簡単に交換できるはずです。(OOPの基本原理)
  • 標準コントロールのプレフィックスを考え出すのはかなり簡単ですが、新しいコントロールは毎日開発されています。独自の WebUserControl を作成することも、サード パーティ製のコントロール セットを購入することもできます。カスタム コントロールに使用するプレフィックスをどのように決定しますか? コードは、コントロールの種類に注目するのではなく、コントロールに含まれる情報に注意を払う必要があります。

  • txtFirstName => firstName または FirstName
  • txtState => 州または州
  • cboState => state または State (コントロール タイプを変更する主な例は、lstState または rdoState についてです。コードはコントロールのタイプではなく、ユーザーが選択した状態に関係していないため、それらはすべて同じ名前にする必要があります)
  • ctlBilling => billingAddress または BillingAddress (カスタム コントロール - ハンガリア語表記では、コントロールが何であるかは明らかではありませんが、意味のある名前を付けることで、それに含まれる情報を理解し始めます。つまり、billingAddress.Street、billingAddress.FullAddress など)
于 2009-05-26T15:08:52.243 に答える
22

Microsoft の公式基準についてはわかりませんが、これは私が開発キャリアを通じて行ってきたことです。

私は通常、コントロールの機能の名前の前にあるコントロールの種類を省略します。省略形は小文字にし、コントロールの名前は CamelCase のままにします。

たとえば、ユーザー名の texbox は tbUserName になります

以下は、私が使用する標準的な略語のリストです。

Abbr     -  Control

btn  -  Button
cb   -  CheckBox
cbl  -  CheckBoxList
dd   -  DropDownList
gv   -  GridView
hl   -  Hyperlink
img  -  Image
ib   -  ImageButton
lbl  -  Label
lbtn -  LinkButton
lb   -  ListBox
lit  -  Literal
pnl  -  Panel
ph   -  PlaceHolder
rb   -  RadioButton
rbl  -  RadioButtonList
txt  -  Textbox
于 2008-10-08T08:27:54.167 に答える
5

ほとんどの場合、そのデータを取得するために現在使用されているコントロールの種類よりも、コントロールがどのような種類の情報を対象としているかに関心があることがわかりました。そのため、コントロールの種類よりも情報の種類を優先します。 IDE でソートされたリスト:

  • AgeRangeDropDownList
  • AgreeedToTermsCheckBox
  • 名テキストボックス
  • 姓テキストボックス

VS:

  • chkAgreedToTerms
  • ddlAgeRange
  • txt名
  • txt姓
于 2008-10-08T13:14:22.747 に答える
2

マイクロソフトは、ここでいくつかのガイダンスを提供しています。

コントロールを Web フォームにドラッグすると、「TextBox1」のようなものが自動的に取得されます。これは、特定のニーズに合わせて「1」の部分を変更する必要があることを IDE が伝えているものです。

その場合、「TextBoxFirstName」が適しているようです。

于 2008-10-08T17:47:58.060 に答える
2

ASP.NET に関するガイドラインはよくわかりませんが、Microsoft の本 Framework Design Guidelines には、クラス メンバーの命名に関するベスト プラクティス ガイドラインがいくつかあります。ほとんどの場合、ASP.NET コントロールは適切な型の保護フィールドになるため、これらの命名ガイドラインは ASP.NET コントロールにも適用されると考えています。実際、コード分析は、コントロール参照フィールドとその他のフィールドを区別しません。

これらのガイドラインでは、型を説明するバリアントではなく、論理的な使用を意味する命名スキームを使用することを推奨しています。これにはいくつかの理由があります。プレフィックスは、後の変更により正しくない可能性があるタイプを開発者に暗示します。コードのメンテナンスに余分な手順が追加されます。Button コントロールを LinkBut​​ton コントロールに変更する場合は、プレフィックスを修正するために名前も変更する必要があります。

そのため、コントロール FirstNameEdit などを呼び出します...

于 2008-10-08T08:32:08.150 に答える
1

私がオプション 1 を好む理由は 2 つあります。

  1. FirstNameTextBox は、私のビジネス オブジェクトによりよく一致します。
  2. IntelliSense でより使いやすくなりました。

csgeroがコントロールタイプの変更について指摘した理由で、FirstNameCtrlへの変更を検討していると言いました。したがって、asp/win フォーム プロパティとの競合の可能性を減らす/削除するために、接尾辞や接頭辞を気にする必要はありません。

于 2008-10-08T08:20:44.743 に答える
1

オプション 1 を使用する方が良いと思います。フィールドの意味と使用法からフィールドを見つけやすく、将来のプログラミング コーディングを理解するのに役立ちます。また、IntelliSense を使用すると、プログラミング コードでこのフィールドを使用する場所を見つけやすくなります。したがって、意味のあるフィールドの名前で適切なコントロールを見つけることができます。このフィールドに使用するコントロールの種類は覚えていませんが、「City」コントロールを見つけたいコントロールの例の代わりに意味のあるフィールド名を使用して、このフィールドを見つけることができます。「City」と入力するだけで、Intellisenceこのコントロールのすべての情報が表示されますが、使用するコントロールの種類を覚えていない場合は、何から始めればよいかわかりません....

于 2011-05-11T20:12:36.267 に答える
1
Abbreviation    ||   ASP.NET Control

標準コントロール:

ボタン ボタン

cb チェックボックス

cbl CheckBoxList

ddl ドロップダウンリスト

fuファイルアップロード

hdn隠しフィールド

lnk ハイパーリンク

img 画像

ibtn(btn) イメージボタン

lbl ラベル

lbtn(btn) リンクボタン

lb リストボックス

lit リテラル

mv マルチビュー

PNパネル

ph プレースホルダー

rbラジオボタン

rbl RadioButtonList

txt テキストボックス

v ビュー

データ管理

dtl データリスト

dp データページャー

dtv 詳細表示

ets EntityDataSource

fv FormView

gv グリッドビュー

lds LinqDataSource

lv-リストビュー

ods ObjectDataSource

qe QueryExtender

rptリピーター

smd SiteMapDataSource

sds SqlDataSource

xds XmlDataSource

検証コントロール

cpv CompareValidator

ctv カスタムバリデーター

rv RangeValidator

rev 正規表現バリデーター

rfv RequiredFieldValidator

vs ValidationSummary

検証コントロール:

cpv // CompareValidator

ctv カスタムバリデーター

rv RangeValidator

rev 正規表現バリデーター

rfv RequiredFieldValidator

于 2014-08-01T18:26:18.037 に答える
0

私は接頭辞としてコントロールタイプを使用し、後でコントロールの名前を使用する傾向がありますが、私は常にCamelCaseなので、さまざまなタイプのコントロールの例では..

  • TxbFirstName
  • DdFirstName
  • ChbFirstName

インテリセンスの理由から、私は常にコントロールの名前を完全に修飾しているので、次のいずれも実行しません...

  • TxbFName
  • TxbClientNo
  • TxbNoOfCpn

しかし、最終的には個人的な好みになります

于 2008-10-08T08:35:22.607 に答える
0

番号 2 も使用しますが、それが良いアプローチであると完全に確信しているわけではありません。これは、「悪い」種類のハンガリー語表記法です。つまり、接頭辞は目的 (意味論) ではなく、型 (構文) を示します。これに関する問題は、TextBox として開始されたものが後で DropDown になり、次に RadioButtonGroup になる可能性があり、そのたびにコントロールの名前を変更する必要があることです。

于 2008-10-08T07:10:40.763 に答える
0

私は uxCity を使用しているので、これは間違いなくユーザー インターフェイス コントロールであり、他のオブジェクトではありませんが、TextBox から DropDownList に変更する場合は変更する必要はありません。

ただし、DropdownListTextbox がある場合は、dlCity と txtCity を使用する必要があります。または、コンボ cboCity を使用します。

名前が 8 文字に制限されていて、インテリセンスやデバッグの強調表示がない場合は、ハンガリー語の表記が不可欠でした。それは規律であり、コーディング スタイルが正しければ、コードも正しい可能性が高いことがわかりました。変数にも使用されていたため、コードを読んで理解できるようになりました。これは DIY タイプの強制でした。

ただし、CityTextbox、CityTextboxLabel CityUx、CityUxLbl を使用します。

それはすべて、誰がプロジェクトの基準を設定しているかにかかっています。

于 2013-03-18T12:30:16.973 に答える
0

ほとんどすべての人がハンガリー式の接頭辞を使用しています (オプション 2)。「Firstname」は実際にはテキストボックス自体ではなく texbox.Text 値であるため、セマンティックな命名はあまり役に立ちません。

于 2008-10-08T07:34:16.007 に答える
0

私もこの問題に苦労してきました。以前は「ハンガリー風接頭辞」を使用していました。

今、私は別のアプローチを取り、コントロールをクラスのプライベート フィールドとして見ようとしています。私は自分のプライベートフィールドをそのタイプで前後に固定していません。

それで、かつては:

var newCustomer = new Customer();
newCustomer.Name = txtName.Value;
newCustomer.Address = txtAddress.Value;
newCustomer.City = txtCity.Value;
newCustomer.HasEnoughMoney = cbHasMoney.Selected;

なる:

var newCustomer = new Customer();
newCustomer.Name = name.Value;
newCustomer.Address = address.Value;
newCustomer.City = city.Value;
newCustomer.HasEnoughMoney = hasMoney.Selected;

正直なところ、「名前」コントロールがテキスト ボックスであるか、それ以外であるかは気にしませんでした。その値が欲しいだけです。

また、コントロールについて話しているのか、別のフィールド/変数について話しているのかが十分に明確でない場合は、そのフィールド/変数の名前またはクラスの機能を再検討する必要があると思います (つまり、少し大きすぎるかもしれません)。 .

于 2008-10-08T12:55:53.890 に答える
0

コードのメンテナンスの観点から見た場合、2 年前にコードを作成した後に見るのに最適な表記法は何でしょうか。フォームにフィールドが多すぎないように努めていますが、これが時々発生することは誰もが知っています。コントロール型を先頭に追加してハンガリー型表記を使用した場合、変数名が明確にならない場合にそれを理解する必要がなく、その値がどこから来ているかを簡単に確認できると思います。任意のタイプのリファクタリング ツールを使用している場合、コントロールの名前を変更するとコードが自動的に変更され、変更コントロールの議論が減ります。

于 2008-10-08T13:09:35.877 に答える
0

ここに正しい答えも間違った答えもないと思います。どのような決定を下したとしても、最も重要な側面は、実際のコーディングに関して一貫性を保つことだと思います。

于 2008-10-08T13:16:43.163 に答える
-1

ガイドラインについてはよくわかりませんが、あると思いますが、常に2番も使用しています!

于 2008-10-08T07:01:26.743 に答える
-1

これらは実際にはあなたの好みに基づいていますが、はい、説明されているオプション 2 は冗長ではなく、名前が表示される前でもコントロールのタイプを示します。

于 2008-10-08T07:08:34.870 に答える