system .Net生成代码中的缩写

时间:2017-08-31 03:33:15

标签: c# .net naming-conventions eventhandler hungarian-notation

虽然微软建议避免在代码中使用缩写,但为什么系统生成的事件处理程序代码包含以下行?

private void TextBox1_TextChanged(object sender, EventArgs e)

请注意,“e”是缩写。此规则不适用于事件处理程序吗?

2 个答案:

答案 0 :(得分:0)

不,它不是匈牙利的表示法。它只是一个缩写名称(如上面的评论中所述) 你最好阅读更多有关匈牙利符号的内容。

  

匈牙利表示法是计算机中的标识符命名约定   编程,其中变量或函数的名称表示它   意图或善意。

例如:string strName="";
在这里你提到变量的类型,作为变量名称的一部分。但在现代,由于不同的原因,它无用。

  • 您可以通过IDE轻松找到该类型,因此,无需在名称上提及
  • 难以更改变量类型,也需要更改其名称。

还有更多。

答案 1 :(得分:0)

你的问题在上面已经得到了很好的解答,但是我会把我的0.02美元用于匈牙利表示法。

有一篇很棒的文章涉及匈牙利符号Here。它解决了一些关于匈牙利符号的误解,特别是应该是什么,而不是通常认为的那样。

@Hiran的答案中的例子是人们常常认为的,而且Hiran非常正确:在str上放置string strName前缀对于现代IDE是多余的。

链接文章的主要内容来自本段:

  

在Simonyi的匈牙利表示法版本中,每个变量都以小写标签作为前缀,表示变量所包含的内容。

     

例如,如果变量名称是rwCol,则rw是前缀。

     

我在那里故意使用“善意”这个词,因为西蒙尼错误地在他的论文中使用了这个词,而且几代程序员误解了他的意思。

我理解微软使用匈牙利表示法的指南更多地是关于它的变化(用变量类型作为变量名前缀)。

因此,在原始意图中,“匈牙利表示法”可能是使用string pName(代表'productName')而不是string name

关于原始问题,匈牙利表示法中的相同声明可能更像是:

private void TextBox1_TextChanged(object sender, EventArgs tcArgs)

鉴于这些EventArgs e位于事件处理程序中,我不相信这种符号在此特定情况下特别有用