Reassignment to a method argument passed by value
objectscriptQuality release
Id
OS0052
Rule type
Code Smell
Severity
Major
Major
SQALE characteristic
- Reliability
- Data
Remediation function
Constant/issue
Remediation cost
15min
This rule detects when a method argument is reassigned in the method body but is not passed by reference.
Two possibilities exist:
This is done on purpose
While this is a distinct possibility, it is generally considered to be bad practice. It is advised that a dedicated variable be created for this purpose.
For instance, instead of doing:
Method m(arg as %String) as %String { // modify arg, then... return arg }
write:
Method m(arg as %String) as %String { #dim x as %String = arg // modify x, then... return x }
The argument was actually meant to be passed by reference
In this case, modify the prototype to add either the ByRef or Output modifier. For instance, replace:
Method m(arg as %String) { // modify arg; modifications NOT visible by the caller }
with:
Method m(ByRef arg as %String) { // modify arg; now modifications are visible by the caller }