Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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 在Visual Basic中使用冒号将两条语句放在同一行上_Vb.net_Vba_Vb6 - Fatal编程技术网

Vb.net 在Visual Basic中使用冒号将两条语句放在同一行上

Vb.net 在Visual Basic中使用冒号将两条语句放在同一行上,vb.net,vba,vb6,Vb.net,Vba,Vb6,在Visual Basic中使用冒号将两条语句放在同一行是否被视为不好的做法?使用冒号组合语句本身并没有什么错误。它确实取决于上下文,但只要不降低可读性,它就没有问题 一般来说,我避免使用冒号。我发现每行有一条语句更具可读性。然而,这不是结肠定位问题。我避免在C语言或C++中用半冒号来做同样的事情。这只是个人喜好 我去另一边。我不喜欢密集的代码行。不合并行时更容易浏览代码 组合语句还可以更轻松地创建仍然适合单个屏幕的长函数 这不是大罪,我只是不喜欢 我也不喜欢一行If语句。一般来说,我建议不要这

在Visual Basic中使用冒号将两条语句放在同一行是否被视为不好的做法?

使用冒号组合语句本身并没有什么错误。它确实取决于上下文,但只要不降低可读性,它就没有问题


一般来说,我避免使用冒号。我发现每行有一条语句更具可读性。然而,这不是结肠定位问题。我避免在C语言或C++中用半冒号来做同样的事情。这只是个人喜好

我去另一边。我不喜欢密集的代码行。不合并行时更容易浏览代码

组合语句还可以更轻松地创建仍然适合单个屏幕的长函数

这不是大罪,我只是不喜欢


我也不喜欢一行If语句。

一般来说,我建议不要这样做,因为这样会导致代码更繁忙

然而,对于简单的任务,它没有什么问题。例如:

for i = 1 to 10: ProcessFoo(i): next
我认为这样的一行足够短,不会引起混乱。

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

我也真的不喜欢一行**
If
**s


这两种都是VGA(640x480)显示器时代的宿醉;这可不是什么借口。

我从来没有在我工作过的任何一家公司看到过以官方身份提到这一点。但是我确实认为过度使用冒号会使代码变得不那么可读,维护起来也会更加困难

我有时确实倾向于使用这些工具,例如在我最近的一个项目中检查取消:

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

就我个人而言,我觉得上面的内容有点多。

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

Public Class DerivedClass : Inherits BaseClass
   ...
End Class
但和其他人一样,我也不鼓励使用它


Chris

这是一个适度的好做法,因为有时通过连接两行来增强可读性:

  • 当线条短而亲密时 相关的
  • 当线条短小的时候

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

  • 这会损害可读性
  • 它使调试复杂化。控制结构,如
    If…Then
    需要保持干净。到了设定断点的时候,你会很高兴保持它的简单
  • 它损害了未来的编辑。通常,您希望保持分区的便携性。移动或重新构造代码块很容易被最小化代码的尝试所阻碍

我只在记录集加密并将变量设置为“无”时使用过它。我认为一行而不是两行可以在屏幕上显示更多的代码,并且不会降低可读性

我见过它在下面这样一些简单的选择案例中使用,但这将是我所能做到的

 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"

即使这样,我也会把“msg=”部分排成一行。

对我来说,你不应该说“永远不要这样做”,你应该说“如果你这样做,一个可能的问题就是这样或那样。”然后自己权衡利弊。其优点是简洁/代码行数少。有时这有助于提高可读性。例如,有些人使用它来进行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的原因之一)它只是让调试变得有点复杂

出于这个原因,我通常不在生产代码中使用冒号。然而,我确实使用它们来提高我在论坛和其他地方发布的“复制/粘贴”代码的简洁性。YMMV:)

我喜欢这个

Using pro As New Process() : With pro

        ...

    End With
End Using

我意识到这是一个非常古老的问题,但这是我在谷歌搜索的第一个结果,所以我希望我能原谅我在这里打电话


有一种情况(事实上正是这种方法让我来到这里的原因)表明,这种方法不仅有用,而且是实现预期结果的唯一途径:即时窗口。要在即时窗口中执行的任何代码都必须位于同一行。因此,为了在即时窗口中使用任何形式的Do、Case、For、While或With,您需要使用冒号。

这个问题的答案是否定的。任何超过否定的东西都是纯粹主观的和浪费的,而不考虑简单否定之外的答案。下面是我打字的浪费

你是某种奴隶吗?随你的便。你是你宇宙的中心,而不是来自世界各地的陌生人。如果你在一家公司工作,这个问题就没有了,因为编码风格已经定义好了,完全不受你的控制。至于一个人的自我,在这个宇宙中,谁将永远注视着你,让我们关心你的代码

我会选择A而不是B。很明显,这表明了不使用冒号的冒号的目的。这是为了节省空间。下面的代码节省了空间,使代码更具可读性。保持简单愚蠢。三元的也一样用法。当代码本身很复杂时,就不再考虑冒号、单行if-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
'================================================================