Asp.net
ASP.NET 控制項的命名准則是什麼?
我們正在製定我們希望在我們的開發團隊中使用的設計指南,並在今天就如何命名 ASP.NET 控制項展開討論。我說的是我們的好朋友 Label、TextBox、Button 等。
我們提出了以下三種我們投票的可能性:(範例是輸入/顯示名字的文本框)
- 將控制項類型作為後綴添加到控制項 ID:[FirstName
_TextBox] 或 [FirstName_tbx]- 將控制項類型作為前綴添加到控制項 ID [tbxFirstName]
- 將控制項的 ID 設置為 FirstName 並命名相關欄位(如文本框的標籤或驗證器),如選項 2 [lblTextBox] 中所示。
我們最終決定使用選項 2。它不像選項 1 那樣冗長,我喜歡它在控制項名稱之前指定它是什麼控制項。
我的問題是,Microsoft 是否針對這些前綴發布了任何指南,或者您是否對我們的決定有任何意見。
Visual Studio 在您將“TextBox1”添加到頁面時添加它的原因是因為 Microsoft 無法知道您打算如何使用它。將其命名為“Control1”會太令人困惑,因為它可以是任意數量的控制項。
Microsoft 提供了針對 OO 命名約定的一般指南,但沒有專門針對 UI 控制項的命名。由於 UI 控制項最終是程式碼中使用的變數,因此它們應該遵循與任何其他變數相同的約定——沒有匈牙利符號前綴。
主要原因是…
- 控制項的類型可能會從文本框更改為列錶框,然後必須修復所有相關程式碼(前面提到過)
- 你的程式碼應該更關心控制項的內容,而不是它是什麼類型的控制項。當您關心控制項的類型時,您開始依賴某些功能並且破壞了封裝 - 您應該能夠輕鬆地交換控制項而無需更改太多或任何程式碼。(基本OOP原理)
- 為標準控制項提供前綴相當容易,但每天都在開發新控制項。您可以製作自己的 WebUserControl,也可以購買一套第三方控制項。**您將如何決定自定義控制項使用哪個前綴?**您的程式碼應該關注其中包含哪些資訊,而不是關注控制項的類型。
例子
- txtFirstName => 名字或名字
- txtState => 州或州
- cboState => state 或 State(更改控制項類型的主要範例 lstState 或 rdoState - 它們都應該具有相同的名稱,因為您的程式碼不關心控制項的類型,而是使用者選擇的狀態)
- ctlBilling => billingAddress 或 BillingAddress(自定義控制項 - 使用匈牙利表示法,它甚至不是很明顯控制項是什麼,但有了一個有意義的名稱,我開始理解其中包含的資訊。即 billingAddress.Street、billingAddress.FullAddress 等)