Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 理解VB'中发现的矛盾;中国官方公约指南_Vb.net_Winforms_Naming Conventions_Naming_Convention - Fatal编程技术网

Vb.net 理解VB'中发现的矛盾;中国官方公约指南

Vb.net 理解VB'中发现的矛盾;中国官方公约指南,vb.net,winforms,naming-conventions,naming,convention,Vb.net,Winforms,Naming Conventions,Naming,Convention,我希望各位同事能帮助我理解以下六条相互矛盾的准则: a) 名称长度: 建议缩写 对于长[…]术语,使用缩写保持名称长度 合理的 建议不要使用缩写: 不要使用缩写或缩写作为标识符名称的一部分 是哪一个?签约还是不签约?促销编号文本框还是促销编号文本框 b) 事件处理程序名称: 事件处理程序名称以描述事件类型的名词开头 后跟“EventHandler”后缀,如“MouseEventHandler” Thia与VisualStudio自动生成的内容不一致。请参见下面的事件处理程序,该处理程序遵循

我希望各位同事能帮助我理解以下六条相互矛盾的准则:

a) 名称长度: 建议缩写

对于长[…]术语,使用缩写保持名称长度 合理的

建议不要使用缩写:

不要使用缩写或缩写作为标识符名称的一部分

是哪一个?签约还是不签约?促销编号文本框还是促销编号文本框

b) 事件处理程序名称: 事件处理程序名称以描述事件类型的名词开头 后跟“EventHandler”后缀,如“MouseEventHandler”

Thia与VisualStudio自动生成的内容不一致。请参见下面的事件处理程序,该处理程序遵循控件、下划线和事件的格式

编辑:事实上,这并不矛盾。有关解释,请参见jmcillhinney的评论

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
字符串“EventHandler”自动附加到VB6 IDE中处理事件的方法中,即使事件名称(单击/输入)也被清楚地附加


c)匈牙利符号:

要查找整个解决方案中的每个文本框,可以很容易地使用搜索工具或intellisense查找文本:

  • “文本框”
  • “TBox_u2;”
  • “待定”
如果你输入前缀,我必须列出任何TBox的名称,然后逐个搜索它们

顺便说一下,如果您有一个标签、一个文本框和一个与Custommer验证表单相关的按钮

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什么
对于“HtmlTag”,它比“HtmlTag”更容易阅读,比“HTML_标记”更短


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