c#具有相同数据但不同类型的变量的命名约定

时间:2012-12-03 19:07:42

标签: c# types casting coding-style naming-conventions

我已经查阅了一些msdn文章,这些文章解决了c#编码约定和命名准则(C# Coding ConventionsNaming Guidelines)以及几个月内堆栈溢出的similar question背部。

我不确定如何处理同时在范围内的两个变量,这些变量在不同类型中保存[概念上]相同的数据。

有助于说明问题的示例将是最初作为字符串保存的标识符,然后将其转换/解析为整数。

我已经提出了3种可能的行动方案,而且我确信我错过了合理的选择。

COA#1:

int iRecordId;
string sRecordId;

其中一个或两个变量前缀为类型缩写。这违反了MS编码指南,声明不要使用匈牙利类型表示法为参数名称添加前缀。

COA#2:

int recordId;
string recordIdString;

其中一个或两个变量明确说明名称中的类型。这看起来很笨拙,虽然它没有使用匈牙利符号,但它似乎违反了之前COA的精神。

COA#3:

int recordIdForDatabase;
string recordIdFromUrl;

每个变量进一步限定数据来自或正在进行的位置。

提案

我的想法是,我最终想要区分两个仅因类型不同的变量,因此虽然有明确规定不使用类型信息为变量添加前缀的指南,但我倾向于使用匈牙利语前缀。由于它与代码的其余部分中的命名约定形成鲜明对比,因此它似乎突出了减轻情节。这是一种合理的方法吗?

欢迎提出问题,评论和愤怒的呼声。

3 个答案:

答案 0 :(得分:9)

第一个选项已经过时,因为我们不再使用Hunharian Notation了。

第二个选项并不错,我在不同的项目中看到了它的用法。

但是从我的观点来看,最后一个选项是可取的,因为它显示了两个变量之间的语义差异,而不是类型的差异。

答案 1 :(得分:2)

为什么要存储两次数据?你可以把记录id放到一个int中,然后在想要转换时调用ToString()吗?

只存储一次数据,就可以减少代码中的错误。

如果每个变量存储不同的值,则按逻辑命名。 E.g,

int socialSecurityID;
string driversLicenceID;

答案 2 :(得分:2)

完全没问题。在私人范围内有类似的东西:

int recordId;
string recordIdString;

但如果这些ID是界面的一部分,请考虑不同的类设计。将url id移动到代表Url的类,在大多数情况下会导致更好的架构。