使用冒号把两个语句在Visual Basic中同一行[关闭](Using colons to put

2019-07-17 18:20发布

它是被认为不好的做法,用冒号把两个语句在Visual Basic中相同的行?

Answer 1:

没有什么内在的错误使用冒号语句组合。 这真的取决于上下文,但只要它不降低可读性,并没有什么不妥的地方。

作为一般规则我避免使用用于此目的的结肠。 我觉得它更具可读性有每行一个声明。 然而,这不是一个冒号具体问题。 我避免做同样在C#或C ++分号。 这只是一个个人喜好。



Answer 2:

这是在节制一个很好的做法,因为有时可读性通过连接两条线增强:

  • 当线路短,密切相关
  • 当线短和琐碎

     Option Compare Database: Option Explicit ''My favorite! rsDataSet.Close: Set rsDataSet= Nothing 

不这样做,如果:

  • 它伤害可读性。
  • 它复杂的调试。 控制结构,例如If...Then需要保持清洁。 你会很高兴你保持它简单,当它的时间来设置一个断点。
  • 它损害未来的编辑。 通常你想保留的部分便于携带。 移动或重新构造的代码块很容易被试图减少你的代码阻碍。


Answer 3:

在一般情况下,我建议不要它,因为它使繁忙的代码。

然而,对于简单的任务,没有什么不妥的地方。 例如:

for i = 1 to 10: ProcessFoo(i): next

我觉得像这样的线是足够短,不会造成混乱。



Answer 4:

我会采取另一边。 我不喜欢的代码密集线条。 这是比较容易,当行不一起脱脂代码。

合并报表也更容易与客户建立长久的功能仍然在一个画面上。

这不是一个大罪,我只是不喜欢它。

我也不喜欢一行if语句。



Answer 5:

对我来说,你不应该说“从来没有这样做”,你应该说:“如果你这样做,可能出现的问题是这样或那样的。” 然后,只需权衡的利弊自己。 亲是代码简洁/几行。 有时,这可以增加可读性。 例如,有些人用它做vb.Net声明:

Dim x As Long: x = 1

或等待循环:

Do Until IE.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

但很明显,你可以真正使粗糙的人太:

Public Sub DoYouKnowWhatThisDoes()
    MsgBox Example
End Sub

Private Function Example()
    Const s$ = "078243185105164060193114247147243200250160004134202029132090174000215255134164128142"
    Const w% = 3: Const l% = 42: Dim i%, r$: For i = 1 To l Step w: r = r & ChrW$(Mid$(s, i, w) Xor Mid$(s, i + l, w)): Next: Example = r
End Function

你可能不希望使用这种方法的另一个实际原因是断点。 断点只能通过在线路上设置。 所以,如果你有几件事情在同一行执行不能隔离第二件事。 它会停在第一条语句。 (这也是有些人不喜欢单行IFS的原因之一。)它只是调试复杂一点。

我通常不使用冒号在生产代码这个原因。 不过,我用它们来提高“复制/粘贴”代码的简洁,我在发帖的论坛和其他地方。 因人而异:)



Answer 6:

我当我clsoing一个记录和变量设置为无只用过它。 我想一个行,而不是两个给了我更多的代码在屏幕上,并且不会损害可读性。

我已经看到了它在简单的选择的情况下使用,如下列但是这将是,据我会去。

 Select Case success
      Case ERROR_FILE_NO_ASSOCIATION: msg = "no association"
      Case ERROR_FILE_NOT_FOUND: msg = "file not found"
      Case ERROR_PATH_NOT_FOUND: msg = "path not found"
      Case ERROR_BAD_FORMAT:     msg = "bad format"

从http://vbnet.mvps.org/index.html?code/system/findexecutable.htm

即使如此我就已经排起了“味精=”部分。



Answer 7:

我意识到这是一个很古老的问题,但它是在我的谷歌搜索的第一个结果,所以我希望我可以原谅在这里鸣响。

有一种情况(到底是什么导致我在这里其实),其中这种做法不仅是有用的,这是完成预期结果的唯一途径:立即窗口。 要在立即窗口执行任何代码都必须在同一行。 因此,为了使用任何形式做的,情况下,的,虽然,或在立即窗口中,你将需要使用冒号。



Answer 8:

认为在大多数在我所工作过的网站的不良做法。 和大多数的VB开发人员与我工作过。 而在我的头上。 如果我看到它,我会承认,我几乎肯定会改变它。 我说“几乎”是因为我承认有,我能找到一段代码,看起来更好这样的可能性。 我不希望看到它在我的有生之年,虽然。

我也真的不喜欢一个线** If计划** S两种。

两者都是从VGA(640×480)监视器的天最有可能的宿醉; 这是没有任何借口的这些日子。



Answer 9:

我从来没有见过以官方身份提到这在任何我已经工作过的公司的。 但我觉得用冒号过分就可以开始让你的代码的可读性,更痛苦维持。

我倾向于检查取消在我最近的一个项目时,这些有时自己使用,例如:

If _bCancel Then Status = CancelProcess() : Return Status

把这个在保持我的代码比其他IF块可读。

但它可以过头,我最近继承了一个项目,这是充满了取结肠使用太远的例子:

    Select Case GetStringValue(Index).Trim.ToLower
        Case "yes", "y" : GetBooleanValue = True
        Case "no", "n" : GetBooleanValue = False
        Case Else : GetBooleanValue = Nothing
    End Select

我个人觉得上面的是一个有点吃不消了。



Answer 10:

我见过使用继承或实现一个接口时,在类声明中使用它:

Public Class DerivedClass : Inherits BaseClass
   ...
End Class

但是,和其他人一样,我也打消了它的使用。

克里斯



Answer 11:

我喜欢这一个

Using pro As New Process() : With pro

        ...

    End With
End Using


Answer 12:

该问题的答案为否任何超出无纯粹是主观的和浪费,不论答案的简单号下面是我打字的浪费之外。

你是某种形式的奴隶? 你爱怎么做就怎么做。 你是你宇宙的中心不是从StackOverflow的一些陌生人。 如果你工作的公司的问题是静音,因为编码风格,将已经被定义,完全在你的控制。 至于一个人的自我,谁在这个宇宙是在沿着设护理会曾经在永恒看看你的代码。

我会选择在B.可以明显看出这显示了结肠不使用冒号的目的。 这是为了节省空间。 下面节省空间,使代码更易读。 保持简单愚蠢。 同为三元? :使用。 当代码本质上是复杂的再一个冒号,单线如果THEN ELSE,或三元不再应予以考虑。

'================================================================
'A
If somevalue1 = 0 Then AddLogTry("True") Else AddLogFalse("False")
If somevalue2 = 0 Then AddLogTry("True") Else AddLogFalse("False")
If somevalue3 = 0 Then AddLogTry("True") Else AddLogFalse("False")
'================================================================

'================================================================
'B
If somevlaue1 = 0 Then
  AddLogTrue("True")
Else
  AddLogFalse("False")
EndIf

If somevlaue2 = 0 Then
  AddLogTrue("True")
Else
  AddLogFalse("False")
EndIf

If somevlaue3 = 0 Then
  AddLogTrue("True")
Else
  AddLogFalse("False")
EndIf
'================================================================


文章来源: Using colons to put two statements on the same line in Visual Basic [closed]
标签: vb.net vba vb6