diff --git a/rules/S3385/vbnet/rule.adoc b/rules/S3385/vbnet/rule.adoc index dea3ad5eda2..005f0adab14 100644 --- a/rules/S3385/vbnet/rule.adoc +++ b/rules/S3385/vbnet/rule.adoc @@ -1,15 +1,8 @@ == Why is this an issue? -Other than ``++Exit Select++``, using an ``++Exit++`` statement is never a good idea. +`Exit Function`, `Exit Property`, and `Exit Sub` are all poor, less-readable substitutes for a simple `Return`, and if used with code that should return a value (`Exit Function` and in some cases `Exit Property`) they could result in a `NullReferenceException`. - -``++Exit Do++``, ``++Exit For++``, ``++Exit Try++``, and ``++Exit While++`` will all result in unstructured control flow, i.e. spaghetti code. - - -``++Exit Function++``, ``++Exit Property++``, and ``++Exit Sub++`` are all poor, less-readable substitutes for a simple ``++return++``, and if used with code that should return a value (``++Exit Function++`` and in some cases ``++Exit Property++``) they could result in a ``++NullReferenceException++``. - - -This rule raises an issue for all uses of ``++Exit++`` except ``++Exit Select++`` and ``++Exit Do++`` statements in loops without condition. +This rule raises an issue for all their usages. === Noncompliant code example @@ -17,25 +10,20 @@ This rule raises an issue for all uses of ``++Exit++`` except ``++Exit Select++ [source,vbnet] ---- Public Class Sample - Dim condition As Boolean - - Public Sub MySub() - If condition Then - Exit Sub ' Noncompliant - End If - For index = 1 To 10 - If index = 5 Then - Exit For ' Noncompliant - End If - ' ... - Next + Public Sub MySub(Condition As Boolean) + If Condition Then Exit Sub ' Noncompliant + ' ... End Sub - Function MyFunction() As Object + + Public Function MyFunction(Condition As Boolean) As Integer + If Condition Then + MyFunction = 42 + Exit Function ' Noncompliant + End If ' ... - MyFunction = 42 - Exit Function ' Noncompliant End Function + End Class ---- @@ -45,21 +33,17 @@ End Class [source,vbnet] ---- Public Class Sample - Dim condition As Boolean - - Public Sub MySub() - If condition Then - Return - End If - For index = 1 To 4 - ' ... - Next + Public Sub MySub(Condition As Boolean) + If Condition Then Return ' Noncompliant + ' ... End Sub - Function MyFunction() As Object + + Public Function MyFunction(Condition As Boolean) As Integer + If Condition Then Return 42 ' ... - Return 42 End Function + End Class ----