簡體   English   中英

c#具有相同數據但不同類型的變量的命名約定

[英]c# naming convention for variables with same data but different types

我已經查閱了一些msdn文章,這些文章解決了c#編碼約定和命名指南( C#編碼約定命名指南 )以及幾個月前關於堆棧溢出的類似問題

我不確定如何處理同時在范圍內的兩個變量,它們在不同類型中保存[概念上]相同的數據。

一個有助於說明問題的例子是最初作為字符串保存的標識符,然后被轉換/解析為整數。

我想出了3個可能的行動方案,我確信我錯過了合理的選擇。

COA#1:

int iRecordId;
string sRecordId;

其中一個或兩個變量前綴為類型縮寫。 這違反了MS編碼指南,聲明不要使用匈牙利類型表示法為參數名稱添加前綴。

COA#2:

int recordId;
string recordIdString;

其中一個或兩個變量明確聲明名稱中的類型。 這似乎很笨拙,雖然它不使用匈牙利表示法,但它似乎違反了之前COA的精神。

COA#3:

int recordIdForDatabase;
string recordIdFromUrl;

每個變量進一步限定數據來自或正在進行的位置。

提案

我的想法是,我最終想要區分兩個僅按類型不同的變量,因此雖然有明確說明不使用類型信息為變量添加前綴的指南,但我傾向於使用匈牙利語前綴。 由於它與代碼的其余部分中的命名約定形成鮮明對比,因此它似乎突出了減輕情節。 這是一種合理的方法嗎?

歡迎提出問題,評論和憤怒的呼聲。

第一個選項已經過時,因為我們不再使用Hunharian Notation了。

第二個選項也不錯,我在不同的項目中看到了它的用法。

但從我的觀點來看,最后一個選項是可取的,因為它顯示了兩個變量之間的語義差異,而不是類型的差異。

為什么要存儲兩次數據? 你能將記錄id放入int中,然后在想要轉換時調用ToString()嗎?

通過僅存儲一次數據,您可以減少代碼中的錯誤。

如果每個變量存儲不同的值,則按邏輯命名。 例如,

int socialSecurityID;
string driversLicenceID;

這完全沒問題。 在私人范圍內有類似的東西:

int recordId;
string recordIdString;

但如果這些ID是界面的一部分,請考慮不同的類設計。 將url id移動到表示Url的類,在大多數情況下會導致更好的體系結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM