它是被认为不好的做法,用冒号把两个语句在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
'================================================================