rspec/rules/S5944/vbnet/rule.adoc
Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
Inline adoc files when they are included exactly once.

Also fix language tags because this inlining gives us better information
on what language the code is written in.
2023-05-25 14:18:12 +02:00

59 lines
1.5 KiB
Plaintext

== Why is this an issue?
Functions can return values using two different syntaxes. The modern, and correct, way to do it is to use a ``++Return++`` statement. The VB6 way, i.e. old way, is to assign a return value to the function's name .
The VB6 syntax is obsolete as it was introduced to simplify migration from VB6 projects. The compiler will create a local variable which is implicitly returned when execution exits the function's scope.
``++Return++`` statement should be used instead as they are easier to read and understand.
=== Noncompliant code example
[source,vbnet]
----
Public Function FunctionName() As Integer
FunctionName = 42 ' Noncompliant
End Function
Public Function FunctionNameFromVariable() As Integer
Dim Value As Integer = 42
FunctionNameFromVariable = Value ' Noncompliant
End Function
----
=== Compliant solution
[source,vbnet]
----
Public Function FunctionName() As Integer
Return 42
End Function
Public Function FunctionNameFromVariable() As Integer
Dim Value As Integer = 42
Return Value
End Function
----
== Resources
* https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/function-statement#returning-from-a-function[.Net documentation - Returning from a Function]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
* Use a 'Return' statement; assigning returned values to function names is obsolete.
* Do not make use of the implicit return value.
endif::env-github,rspecator-view[]