56 lines
1.1 KiB
Plaintext
56 lines
1.1 KiB
Plaintext
![]() |
Having functions and procedures which take too many parameters decreases the code's readability and usability. It is likely that such a function/procedure is not modular enough, and should be split into several smaller ones.
|
||
|
|
||
|
== Noncompliant Code Example
|
||
|
|
||
|
With the default threshold of 10:
|
||
|
----
|
||
|
SET SERVEROUTPUT ON
|
||
|
|
||
|
CREATE FUNCTION sumWithTooManyParameters( -- Noncompliant, too many parameters
|
||
|
a1 PLS_INTEGER,
|
||
|
a2 PLS_INTEGER,
|
||
|
a3 PLS_INTEGER,
|
||
|
a4 PLS_INTEGER,
|
||
|
a5 PLS_INTEGER,
|
||
|
a6 PLS_INTEGER,
|
||
|
a7 PLS_INTEGER,
|
||
|
a8 PLS_INTEGER,
|
||
|
a9 PLS_INTEGER,
|
||
|
a10 PLS_INTEGER,
|
||
|
a11 PLS_INTEGER
|
||
|
)
|
||
|
RETURN PLS_INTEGER AS
|
||
|
BEGIN
|
||
|
RETURN a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11;
|
||
|
END;
|
||
|
/
|
||
|
|
||
|
BEGIN
|
||
|
DBMS_OUTPUT.PUT_LINE('Sum is ' || sumWithTooManyParameters(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11));
|
||
|
END;
|
||
|
/
|
||
|
|
||
|
DROP FUNCTION sumWithTooManyParameters;
|
||
|
----
|
||
|
|
||
|
== Compliant Solution
|
||
|
|
||
|
----
|
||
|
SET SERVEROUTPUT ON
|
||
|
|
||
|
CREATE FUNCTION sumCorrected(n PLS_INTEGER) RETURN PLS_INTEGER AS -- Compliant
|
||
|
BEGIN
|
||
|
RETURN (1 + n)*(n / 2);
|
||
|
END;
|
||
|
/
|
||
|
|
||
|
BEGIN
|
||
|
DBMS_OUTPUT.PUT_LINE('Sum is ' || sumCorrected(11));
|
||
|
END;
|
||
|
/
|
||
|
|
||
|
DROP FUNCTION sumCorrected;
|
||
|
----
|
||
|
----
|
||
|
----
|