首页 / 知识
VB.NET专用字段的命名约定
2023-04-12 00:04:00

Naming convention for VB.NET private fields在VB.NET中是否有命名私有字段的官方约定? 例如,如果我有一个名为" Foo"的属性,通常我将私有字段称为" _Foo"。 《官方指南》似乎对此不赞成: "不要为字段名使用前缀。例如,不要使用g_或s_来区分静态字段和非静态字段。" 在C#中,您可以调用私有字段'foo',属性'Foo',并在构造函数中将私有字段称为'this.foo'。 由于VB.NET不区分大小写,因此您不能这样做-有什么建议吗? 我仍然在VB中为私有字段使用_前缀,因此我将_foo作为私有字段,并将Foo作为属性。我也为c#和几乎所有我编写的代码执行此操作。通常,我不会太着迷于"什么是正确的方法",因为实际上并没有"正确"的方法(尽管有一些非常糟糕的方法),而是要始终如一地关注它。 归根结底,与使用任何"正确"约定相比,保持一致将使您的代码更具可读性和可维护性。 这是个人喜好,尽管人们普遍支持区分。即使在C#中,我也认为没有一种广泛使用的约定。 杰夫·普罗塞斯说
摘自.NET Framework设计指南第二版第73页。 杰弗里·里希特说
摘自《 .NET Framework设计指南第二版》第47页。Anthony Moore(BCL团队)还认为值得考虑使用" m_"和" s_",第48页。 在VB.NET 4.0中,大多数人可能都知道您不需要为Property声明显式编写getter和setter,如下所示:
VB自动创建称为_Foo和_Foo2的私有成员变量。 似乎Microsoft和VS团队已采用_约定,因此我认为没有问题。 您专门链接的设计指南指出,它们仅适用于静态的公共字段和受保护的字段。设计指南主要侧重于设计公共API。您对私人成员的处理取决于您自己。我不是很肯定,但是我比较有信心,在编译器检查CLS遵从性时不会考虑使用私有成员,因为只有公共/受保护的成员才能在那里参加比赛(想法是,"如果某人使用的语言不允许_字符尝试使用您的库?"如果成员是私有的,答案是"没有,用户不必使用这些成员。"但是,如果成员是公开的,则您会遇到麻烦。 ) 就是说,我要添加回声室,并指出无论您做什么,保持一致都是很重要的。我的雇主要求C#和VB中的私有字段都以_为前缀,并且由于我们所有人都遵循此约定,因此很容易使用其他人编写的代码。 官方准则就是准则。您可以随时绕过它们。话虽这么说,我们通常在C#和VB.NET中都用下划线为字段添加前缀。该约定非常普遍(显然,《官方指南》被忽略了)。 然后可以引用没有" me"关键字的私有字段(" this"关键字用于C#:)
为了澄清和保持一致,我找不到比" _"更好的东西。缺点包括:
我通过在编辑器中将其关闭来解决这些问题,并尽量不要过多考虑CLS遵从性。 我认为没有正式的命名约定,但是我已经看到Microsoft在Microsoft.VisualBasic dll(通过反射器)中使用m_。 我同意最重要的不是一种风格,而是一致的。 话虽如此,专用字段的新MS / .NET样式往往是_fooVar(下划线后跟驼峰名称) 我更喜欢对私人字段使用下划线前缀。我将小写的第一个字母用作方法参数。我遵循为方法使用小写驼峰参数的准则,我认为这比私有字段的命名更为重要,因为它是类API的一部分。 。例如
使用此模式,您在C#或VB.NET中不会与私有字段和构造函数参数发生任何命名冲突。 我同意@lomaxx,在整个团队中保持一致比拥有正确的约定更为重要。 尽管如此,这里还是几个获取编码约定思想和指导的好地方: |
最新内容
相关内容
python如何查看对象属性
python如何查看对象属性,培训,网络,系统,函数,对象,属性,变量,示例,实例,模块,在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要关于asp.net:如何定义带有潜在子元
关于asp.net:如何定义带有潜在子元素和属性的自定义web.config部分?,关于asp.net:如何定义带有潜在子元素和属性的自定义web.config部HTML5新元素属性最新详解
HTML5新元素属性最新详解,HTML5,新元素,新,元素,属性,最新,详解,canvas,, canvas 新元素 canvas标签定义图形,比如图表和其他JavaScript 文件名命名约定规定
JavaScript 文件名命名约定规定,JavaScript,文件名,命名,约定,规定,JavaScript,,JavaScript 文件名命名约定规定在 HTML 中加载 JavKnockout.Js中的Observables监控属
Knockout.Js中的Observables监控属性,Knockout.Js,中的,Observables,监控,属性,Knockout.Js,,Knockout.Js中的Observables监控属性K给已有的函数对象增加属性或者方法
给已有的函数对象增加属性或者方法,给,已,有的,函数,对象,增加,属性,或者,方法,,给已有的函数对象增加属性或者方法格式:构造函数名.Vue3-计算属性关键词
Vue3-计算属性关键词,Vue3-,计算,属性,关键词,Vue3,计算,属性,关键词,,Vue3 计算属性计算属性关键词: computed。计算属性在处理一使用location.pathname属性返回URL
使用location.pathname属性返回URL的路径名,使用,location.pathname,属性,返回,URL,的,路径,名,,Window Location Pathnamelocation