从VB6函数返回值

时间:2011-12-04 12:25:14

标签: vb6

我有一个VB6函数,它执行SQL删除。该函数返回一个布尔值,具体取决于删除是否成功:

Public Function Delete(ByVal RecordID As Integer)  As Boolean

On Error GoTo ErrorGenerated //Execute SQL delete

Delete = True

Exit Function

ErrorGenerated: Delete = False

End Function

我在某处读到最好返回一个整数,它指示删除是否成功。但是,从我能看到的函数中运行函数只能有两个结果,即删除或未删除(如果抛出错误,则不会删除)。返回一个整数会更好吗?

4 个答案:

答案 0 :(得分:3)

我建议你最好的办法是返回一个枚举类型;然后,枚举的每个值都可以以明确且明确的方式向调用者解释问题是什么,并且可以在以后根据需要添加新的错误原因而不会破坏任何内容。有点像...

Public Enum DB_ERRS
    Success
    NoConnection
    FailedForThisReason
    FailedForThatReason
    FailedForOtherReason
    Failed
End Enum

然后,所有数据库访问函数都可以返回此类型的值...

Public Function Delete(ByVal RecordID As Integer) As DB_ERRS

  On Error GoTo ErrorGenerated
  Execute SQL delete
  Delete = Success
  Exit Function

  ErrorGenerated:

  If Err.Number = this Then
     Delete = FailedForThisReason
  Else
     Delete = Failed
  End If

End Function 

智能感知甚至可以帮助你填补它们。

答案 1 :(得分:2)

这是相当主观的。

有人会说,返回一个布尔值,因为它很简单。

另一个人会说,返回一个整数,因为以后你可能想要添加第三个状态,例如“archived”,这会破坏现有的代码。

而别人会说,Ditch认为C风格的返回代码。创建一个不返回任何内容的sub,并在需要指示失败时引发异常。

我个人更喜欢例外。但是由你来决定。

答案 2 :(得分:0)

就大小而言,integer是32位有符号整数,而boolean数据类型实际上没有定义的大小。但是,它还取决于您阅读有关使用整数而不是布尔值的上下文。

对于 SOME ,将其用作函数的返回值时,差异无关紧要。

但是,它可能是存储过程中的首选项,如果您还在考虑存储过程的返回值。布尔值的评估(当转换为数字时)可能导致它被视为一点点(0和1)。在任何情况下,它更像是一种主观方法。整数允许更大的灵活性,而布尔值提供限制和简单性。哪个更好?我认为这几乎完全取决于您,您的偏好,您的编码标准,您公司的编码标准或其他等等。

只是为了分享数据类型的链接:

http://msdn.microsoft.com/en-us/library/aa383751(v=vs.85).aspx

答案 3 :(得分:0)

我会抛出我的意见。我个人认为返回一个布尔值是正确的做法。你真的在乎为什么它不能删除?通常情况下,删除可能首先失败的原因只有几个(文件锁定或缺少权限)。如果你需要返回失败的原因,以便以某种方式处理它,那么是的,返回一个整数。现在个人而言,我不喜欢幻数,所以我永远不会返回一个整数,而是会返回一个枚举值。