Passing parameters by reference requires developers to understand the subtle differences between reference and value types. It is preferable to avoid passing parameters by reference when possible. == Noncompliant Code Example [source,vbnet] ---- Module Module1 Sub Foo(ByRef result As Integer) ' Non-Compliant result = 42 End Sub Sub Main() Dim result As Integer Foo(result) Console.WriteLine(result) End Sub End Module ---- == Compliant Solution [source,vbnet] ---- Module Module1 Function Foo() As Integer ' Compliant Return 42 End Function Sub Main() Dim result As Integer = Foo() Console.WriteLine(result) End Sub End Module ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] endif::env-github,rspecator-view[]