Vb.net 理解VB'中发现的矛盾;中国官方公约指南
我希望各位同事能帮助我理解以下六条相互矛盾的准则: a) 名称长度: 建议缩写 对于长[…]术语,使用缩写保持名称长度 合理的 建议不要使用缩写: 不要使用缩写或缩写作为标识符名称的一部分 是哪一个?签约还是不签约?促销编号文本框还是促销编号文本框 b) 事件处理程序名称: 事件处理程序名称以描述事件类型的名词开头 后跟“EventHandler”后缀,如“MouseEventHandler” Thia与VisualStudio自动生成的内容不一致。请参见下面的事件处理程序,该处理程序遵循控件、下划线和事件的格式 编辑:事实上,这并不矛盾。有关解释,请参见jmcillhinney的评论Vb.net 理解VB'中发现的矛盾;中国官方公约指南,vb.net,winforms,naming-conventions,naming,convention,Vb.net,Winforms,Naming Conventions,Naming,Convention,我希望各位同事能帮助我理解以下六条相互矛盾的准则: a) 名称长度: 建议缩写 对于长[…]术语,使用缩写保持名称长度 合理的 建议不要使用缩写: 不要使用缩写或缩写作为标识符名称的一部分 是哪一个?签约还是不签约?促销编号文本框还是促销编号文本框 b) 事件处理程序名称: 事件处理程序名称以描述事件类型的名词开头 后跟“EventHandler”后缀,如“MouseEventHandler” Thia与VisualStudio自动生成的内容不一致。请参见下面的事件处理程序,该处理程序遵循
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'...
End Sub
c) 匈牙利符号:
不要使用匈牙利符号
……但以下两种符号似乎都是匈牙利符号的变体
对象应使用一致的前缀命名,以使
很容易识别对象的类型。[…]chkreadolly[…]
lblHelpMessage
使用[…]前缀指示变量的数据类型。[...]
整数
d) 首字母缩略词大写:
对于长[…]术语,请使用缩写[…],例如,“HTML”,
而不是“超文本标记语言”
[…]PASCALCING[…]表示长度超过两个字母的[…]首字母缩写词
[…]示例:[…]HtmlTag”
这是不明确的。假设我有首字母缩略词PIN。它应该是PINTextBox还是PINTextBox
e) 评论:
将注释放在单独的一行上,而不是放在
代码
注释可以跟在同一行上的语句后面,也可以占据整个语句
线路
这是不明确的。是否建议使用内联注释
f) 星号线分隔符:
不要用带格式的星号块围绕注释
但是,还提供了以下使用格式化块星号的示例:
'*****************************************************
' Purpose: Locates the first occurrence of a
' specified user in the UserList array.
' Inputs:
' strUserList(): the list of users to be searched.
' strTargetUser: the name of the user to search for.
' Returns: The index of the first occurrence of the
' rsTargetUser in the rasUserList array.
' If target user is not found, return -1.
'*****************************************************
一个可行的惯例是,当一个或另一个在运行中理解你代码中的每一个单词时,尤其是你的同事,或者取决于你雇主的要求
a)长名称。 长名字容易读吗?不!用最少的字符找到最明确的意思。 或者使用另一种编码方法:Object.Property/将您的方法分成几个部分
Sub ReturnLeftCup_SwapWithNext_ReturnEveryCups(...)
' ...
' Prefer
Sub ManipulateCups(...)
ReturnLeftCup(...)
SwapCupWithNext(...)
ReturnAllCups(...)
End Sub
b)EvenHandler后缀。 我的理解是这并不矛盾:
- 写入事件处理程序名称/含义/操作:
或按钮单击
按钮\u单击
- 不要写“EventHandler”:
或按钮单击EventHandler
按钮单击\u EventHandler
c)匈牙利符号: 要查找整个解决方案中的每个文本框,可以很容易地使用搜索工具或intellisense查找文本:
- “文本框”
- “TBox_u2;”
- “待定”
Private Sub ClickCustommer(...) Handles bCustommer.Click
lCustommer.Text = tCustommer.Text.ToUpper()
End Sub
' :/ bCustommer is a Button obviously.
' but are lCustommer and/or tCustommer controls or objects ?
Private Sub Button_Custommer_Click(...) Handles ButtonCustommer.Click
Label_Custommer.Text = TextBox_Custommer.Text.ToUpper()
End Sub
' better don't you think ?
控件使用前缀,变量/对象(非控件)不使用前缀
前缀(如TextB\u User
)或后缀(如User\u TextB
)?
小心!个人意见:
很久以前用过前缀。然后我改变了主意…然后又改变了主意:/
如果您使用后缀,表单的控件不会在IDE的控件列表下拉列表中按类型排序。当您忘记将按钮放在tabpages内的面板内,splittercontainer内的面板内……所有按钮都停靠在一起以填充容器客户端空间,祝您好运找到一个类似的面板。但是如果你使用了前缀、文本框、标签、面板等等,那么所有与同一上下文相关的控件都会在下拉列表中出错 我选择了轻松检索嵌套在另一个面板中的面板(在表单预览中只能选择最上面的面板),因此我坚持使用前缀 对(某些)IDE的一个很好的补充是在DropdownList旁边过滤组件名
d)首字母缩略词大写 PINTextBox还是PINTextBox 如果我能理解你代码中其他地方的“PIN”或“PIN”,这两个词对我来说都是正确的。问题不在于文本框的名称,而是上下文:我是否清楚地了解这个文本框的用法,或者我必须猜测PIN或PIN是什么 如果要我猜的话:
- PINTextBox->“PIN”似乎是首字母缩略词,但我不知道它的意思。“可怜的标识符名称”
- PinTextBox->Pin什么
e)评论: 内联注释适合IDE时很好。我不喜欢向右滚动阅读注释。你呢?但是,我不喜欢问自己注释是属于上面还是下面的代码。你呢 =>内联注释既不好也不坏。如果注释使用最少的单词添加有用的内容而不在工作流中添加噪音(阅读代码),则注释就是好的注释
f)星号行分隔符: 当您无法将代码分块组织时,它们是必须的。今天,您有:
Public Partial Class MyMultipleFilesClass
你可以
#Region "UserInterface Section"
Private Sub ChangeFormBackground(...)
Private Sub ResizeIconPictureB(...)
' ...
#End Region
[+] Private Function OutputLeftWord(...) As String
[+] Private Function FixWordCasing(...) As String
[-] Private Sub ExtractWords(...)
Dim CurrentWord As String
While ...
CurrentWord = FixWordCasing(OutputLeftWord(...))
...
End While
End Function
[+] Private Sub FormatRTF()
''' <summary>
''' Scalar that defines the amount of available power
''' of the Character in this (fight) game.
''' <para>Used to draw Power Level Bar Indicator on top of Screen<para>
''' <para>Used to compute damage bonus upon hit.<para>
''' <para>Used to compute shield strength.<para>
''' </summary>
Private p_CharacterPower As Integer