[英]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.