
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.
58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Having default value for optional boolean parameters makes the logic of function when missing that parameter more evident. When providing a default value is not possible, it is better to split the function into two with a clear responsibility separation.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,javascript]
|
|
----
|
|
function countPositiveNumbers(arr: number[], countZero?: boolean) { // Noncompliant, default value for 'countZero' should be defined
|
|
// ...
|
|
}
|
|
|
|
function toggleProperty(property: string, value?: boolean) { // Noncompliant, a new function should be defined
|
|
if (value !== undefined) {
|
|
setProperty(property, value);
|
|
} else {
|
|
setProperty(property, calculateProperty());
|
|
}
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,javascript]
|
|
----
|
|
function countPositiveNumbers(arr: number[], countZero = false) {
|
|
// ...
|
|
}
|
|
|
|
function toggleProperty(property: string, value: boolean) {
|
|
setProperty(property, value);
|
|
}
|
|
|
|
function togglePropertyToCalculatedValue(property: string) {
|
|
setProperty(property, calculateProperty());
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Provide a default value for 'xxx' so that the logic of the function is more evident when this parameter is missing. Consider defining another function if providing default value is not possible.
|
|
|
|
|
|
=== Highlighting
|
|
|
|
Entire parameter with type
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|