現在、開発チームで使用したい設計ガイドラインを作成中であり、ASP.NETコントロールの名前の付け方について今日話し合いました。私は私たちの親友のラベル、テキストボックス、ボタンなどについて話している。
私たちが投票した次の3つの可能性を思いつきました:(例はFirstNameを入力/表示するためのTextBoxです)
_
TextBox]または[FirstName_
tbx]最終的にオプション2を使用することにしました。オプション1ほど冗長ではなく、コントロールの名前の前にどのコントロールであるかを指定するのが好きです。
私の質問は、マイクロソフトがこれらのプレフィックスに関するガイドラインをリリースしたかどうか、または私たちの決定についてコメントがあるかどうかです。
Visual Studioが「TextBox1」をページに追加するときに追加する理由は、Microsoftがそれをどのように使用するかを知る方法がないためです。 「Control1」という名前を付けると、コントロールがいくつあっても混乱する可能性があります。
Microsoftは、一般にOO命名規則についてのガイダンスを提供していますが、UIコントロールの命名については特にそうではありません。UIコントロールは最終的にコードで使用される変数であるため、他の変数と同じ規則に従う必要があります。表記接頭辞。
主な理由は...
例
マイクロソフトの公式標準についてはよくわかりませんが、これは私が開発キャリアを通じて行ってきたことです。
私は通常、コントロールが行うことの名前の前にあるコントロールタイプを省略します。略語は小文字で、コントロールの名前は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
ほとんどの場合、そのデータをキャプチャするために現在使用されているコントロールタイプではなく、コントロールがどのような種類の情報であるかを気にするので、コントロールタイプよりも情報のタイプを優先します。 IDEでソートされたリスト:
VS:
Microsoftはここでsomeガイダンスを提供します。
コントロールをWebフォームにドラッグすると、「TextBox1」のようなものが自動的に表示されます。これはIDEで、特定のニーズに合わせて「1」の部分を変更する必要があることを示しています。
その場合、「TextBoxFirstName」が道のりのようです。
オプション1を好む2つの理由:
Csgeroがコントロールタイプの変更について指摘した理由から、FirstNameCtrlへの変更を検討していると述べました。では、asp/winフォームのプロパティとの競合の可能性を減らす/取り除くために、なぜ接尾辞や接頭辞を気にする必要があるのでしょうか。
ASP.NETに関するガイドラインはわかりませんが、Microsoftの 『Framework Design Guidelines』という本には、クラスメンバーの命名に関するいくつかのベストプラクティスガイドラインがあります。ほとんどの場合、ASP.NETコントロールは適切なタイプの保護されたフィールドになるため、これらの命名ガイドラインはASP.NETコントロールにも適用されると思います。実際、コード分析は、コントロール参照フィールドと他のフィールドを区別しません。
これらのガイドラインでは、タイプを説明するバリアントではなく、論理的な使用を意味する命名スキームを使用することを推奨しています。これにはいくつかの理由があります。プレフィックスは、後の変更のために正しくない可能性がある開発者へのタイプを意味します。これにより、コードの保守に追加の手順が追加されます。 ButtonコントロールをLinkButtonコントロールに変更する場合は、プレフィックスを修正するために名前も変更する必要があります。
そのため、コントロールをFirstNameEditなどと呼びます。
オプション1を使用する方が良いと思います。なぜなら、その意味と使用法によってフィールドを簡単に見つけて、将来のプログラミングコーディングを理解できるからです。また、IntelliSenseを使用すると、プログラミングコードのどこでこのフィールドを使用するかを見つけることができます。したがって、意味のあるフィールドの名前で適切なコントロールを見つけることができます。このフィールドに使用するコントロールの種類は覚えていませんが、「City」コントロールを検索するコントロールの例のタイプではなく、意味のあるフィールド名を使用してこのフィールドを見つけることができます。「City」と入力するだけです。Intellisenceこのコントロールのすべての情報が表示されますが、使用するコントロールの種類を覚えていない場合は、何を開始すればよいかわかりません。
Abbreviation || ASP.NET Control
標準制御:
btnボタン
cbチェックボックス
cbl CheckBoxList
ddl DropDownList
fu FileUpload
hdn HiddenField
lnkハイパーリンク
img画像
ibtn(btn)ImageButton
lblラベル
lbtn(btn)LinkButton
lbリストボックス
点灯リテラル
mv MultiView
pnlパネル
ph PlaceHolder
rb RadioButton
rbl RadioButtonList
tblテーブル
txt TextBox
v表示
データ管理
dtl DataList
dp DataPager
dtv DetailsView
ets EntityDataSource
fv FormView
gv GridView
lds LinqDataSource
lv-ListView
ods ObjectDataSource
qe QueryExtender
rptリピーター
smd SiteMapDataSource
sds SqlDataSource
xds XmlDataSource
検証管理
cpv CompareValidator
ctv CustomValidator
rv RangeValidator
rev RegularExpressionValidator
rfv RequiredFieldValidator
vsValidationSummary
検証管理:
cpv // CompareValidator
ctv CustomValidator
rv RangeValidator
rev RegularExpressionValidator
rfv RequiredFieldValidator
私もこの問題に苦しんでいます。以前は「ハンガリー風の接頭辞」を使用していました。
今、私は別のアプローチを取り、コントロールをクラスのプライベートフィールドとして見ようとしています。プライベートフィールドのタイプを前置していないのに、なぜTextBoxに後置する必要があるのでしょうか。
それで、以前は何でしたか:
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;
正直なところ、「名前」コントロールがテキストボックスであるかどうかは気にせず、その値が欲しいだけです。
また、コントロールまたは別のフィールド/変数について話しているかどうかが十分に明確でない場合は、そのフィールド/変数の名前またはクラスの関数を再検討する必要があると思います(つまり、少し大きいかもしれません)。 。
私は接頭辞としてコントロールタイプを使用し、後でコントロールの名前を使用する傾向がありますが、私は常にキャメルケースなので、さまざまなタイプのコントロールの例では..
インテリジェントな理由から、私は常にコントロールの名前を完全に修飾しているので、次のことは何もしません...
しかし、最終的には個人的な好みになります
ハンガリアン記法を使用する唯一の理由は、IDEにインテリセンスがなく、iCounterが整数である理由を理解するのが容易ではなかったためです。
ただし、briefを使用して開発する時間はもう過ぎており、IDEは1秒で情報を表示します
次に、VB.NETコードを継承しますが、大文字と小文字は区別されません。どうしますか?
lblFirstName、txtFirstName 1つはラベルで、もう1つはテキストボックスです。
では、大文字と小文字を区別せずにこれらにどのように名前を付け、実際にそれらが何であるかを知るにはどうすればよいでしょうか。
uxFirstNameとuxFirstNameが機能しない
私が見つけた唯一の答えは、ハンガリアン記法を使用することです、はい、私は口の中に投げました。次に、vb.netを使用します。netは大文字と小文字を区別する必要があります。これは、すべてがILにコンパイルされるためです。
2番も使用しますが、それが良いアプローチであるとは完全には確信していません。これは「悪い」種類からのハンガリアン記法です。つまり、接頭辞は目的(意味論)ではなく、型(構文)を示します。これに伴う問題は、TextBoxとして開始したものが後でDropDownになり、次にRadioButtonGroupになる可能性があり、そのたびにコントロールの名前を変更する必要があることです。
コード保守の観点からそれを見ると、2年前にコードを実行した後に見るのに最適な表記法は何でしょうか。フォームにフィールドが多すぎないように努めていますが、これが時々発生することは誰もが知っています。コントロールタイプの前にハンガリー語のタイプ表記を使用した場合、変数名でわかりにくい場合に、その値がどこから来ているのかを把握するよりも簡単だと思います。いずれかのタイプのリファクタリングツールを使用している場合、コントロールの名前を変更すると、コードが自動的に変更されるため、コントロールの変更に関する議論が減ります。
ここに正しい答えや間違った答えがあるとは思いません。あなたが何を決めようとも、最も重要な側面は、実際にコーディングに関して一貫性を保つことだけだと思います。
私はuxCityを使用しているので、それが間違いなくユーザーインターフェイスコントロールであり、他のオブジェクトではないことがわかりますが、TextBoxからDropDownListに移動する場合は変更する必要はありません。
ただし、DropdownList and Textboxがある場合は、dlCityとtxtCityを使用するか、コンボcboCityを使用する必要があります。
ハンガリアン記法は、8文字の名前に制限されていて、インテリセンスやデバッグの強調表示がない場合は厳密ではありませんでした。それは規律であり、コーディングスタイルが正しければ、コードは正しい可能性が高いことがわかりました。変数にも使用されているため、コードを読んで、DIYタイプの強制であるため理解できます。
ただし、CityTextbox、CityTextboxLabel CityUx、CityUxLblを使用します
それはすべて、誰がプロジェクトの基準を設定しているかによって異なります。
ほとんどの人がハンガリー語スタイルのプレフィックスを使用します(オプション2)。 「Firstname」は実際にはテキストボックス自体ではなくtexbox.Text値であるため、セマンティック命名はあまり役に立ちません。