成员变量的下划线前缀.智能感知

leo*_*ora 6 c# coding-style naming-conventions

每个人都说"下划线,没有下划线"的辩论纯粹是哲学和用户偏好驱动,但有智能的下划线允许你很容易地将你的成员变量与你的局部变量区分开来,从而给你一个具体的好处

对所有成员变量都有下划线的好处是否有任何反驳论据?

Jon*_*eet 22

是的 - 对某些人来说,它会降低可读性.我相信不同的人以不同的方式阅读(例如,一些内部发声,而另一些则没有).对于某些人(包括我自己),下划线在我阅读时会中断代码的"流程".

我认为,如果你在分析本地和实例变量方面遇到困难,那么很可能你的方法太大或你的课程做得太多了.当然并非总是如此,但我不会发现短期类/方法存在问题.

  • 不仅__我的_brain有__暂停__trying _figure out ifit是一个控件_字符(读_sanely命名变量_names是_kind _of _automatic就像读一本书中的整个_words,甚至没有看_at _atracters _-但是_也通过_1字符缩进变量,打破缩进流'导致不规则的垂直_outlining _; p (5认同)
  • 好吧,我一直在使用下划线..对我而言.1)更多打字2)容易遗漏3)下划线更容易阅读(从我的角度来看)因为这个.更像是vb"then""end if"4)并且无论你的方法有多小或多大,明确区分本地和类vars总是有益的 (3认同)

Ste*_*eve 13

如果它只是你想要的intellisense,你可以通过输入" this." 来获得它.

好吧,它比"_"还要多4个字符,但是智能感知会为你调出你的成员.

如果您使用下划线并且您的团队使用下划线,那么继续使用它们.其他人会使用" m_",其他人可能会有其他想法.我使用StyleCop,在我的团队中,争论已经结束,我们使用" this." 并且不使用匈牙利风格或下划线前缀.我们不再担心它了.

[编辑]这不是对你的问题的批评 - 这是一个有效的问题,值得一提 - 但这场辩论在开发项目上浪费了太多时间.即使我不喜欢每一个关于StyleCop的事情,我也乐意使用它,因为它削减了这种类型的辩论.说真的,我参加了一个小时的会议,这种讨论占据了整个开发团队.疯.就像我说的,你的问题是有效的,但请不要浪费你自己的时间为此苦恼,这是不值得的:-)


Bri*_*sen 7

使用下划线只是实现这种效果的一种方法.重要的是要保持一致.


Guf*_*ffa 5

下划线可以看作匈牙利符号的一种形式*,但前缀是一个"神奇的角色",而不是具有意义的东西.

如果你想要更多关于前缀的内容,你可以使用像membermbr或前缀m.有时使用前缀m_,但是下划线用作分隔符而不是前缀的一部分,.NET的命名建议说它不应该用作分隔符.

就个人而言,我已经开始喜欢成员变量的下划线,尽管它是带有隐藏含义的前缀.它不会像任何其他前缀那样混乱名称.

和往常一样,选择标准并坚持下去比实际选择的标准更重要.


* 匈牙利语版本主要用于指定弱类型语言(如VBScript)中的数据类型,但最初的目的是指定变量的其他属性,因此将其用于成员变量更符合原始意图.