JS-322 Write the TypeScript variant of RSPEC S2301
This commit is contained in:
parent
27f9347d7b
commit
c070b25275
@ -1,3 +1,3 @@
|
||||
{
|
||||
|
||||
"title": "Methods should not contain selector arguments"
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
include::../rule.adoc[]
|
||||
include::./why.adoc[]
|
||||
|
||||
ifdef::env-github,rspecator-view[]
|
||||
|
||||
|
51
rules/S2301/java/why.adoc
Normal file
51
rules/S2301/java/why.adoc
Normal file
@ -0,0 +1,51 @@
|
||||
== Why is this an issue?
|
||||
|
||||
A selector argument is a ``++boolean++`` argument that's used to determine which of two paths to take through a method. Specifying such a parameter may seem innocuous, particularly if it's well named.
|
||||
|
||||
|
||||
Unfortunately, developers calling the method won't see the parameter name, only its value. They'll be forced either to guess at the meaning or to take extra time to look the method up.
|
||||
|
||||
|
||||
Instead, separate methods should be written.
|
||||
|
||||
|
||||
This rule finds methods with a ``++boolean++`` that's used to determine which path to take through the method.
|
||||
|
||||
|
||||
=== Noncompliant code example
|
||||
|
||||
[source,text,typescript]
|
||||
----
|
||||
function tempt(name: string, ofAge: boolean) {
|
||||
if (ofAge) {
|
||||
offerLiquor(name);
|
||||
} else {
|
||||
offerCandy(name);
|
||||
}
|
||||
}
|
||||
|
||||
// ...
|
||||
function corrupt() {
|
||||
tempt("Joe", false); // does this mean not to temp Joe?
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
=== Compliant solution
|
||||
|
||||
[source,text,typescript]
|
||||
----
|
||||
function temptAdult(name: string) {
|
||||
offerLiquor(name);
|
||||
}
|
||||
|
||||
function temptChild(name: string) {
|
||||
offerCandy(name);
|
||||
}
|
||||
|
||||
// ...
|
||||
function corrupt() {
|
||||
age < legalAge ? temptChild("Joe") : temptAdult("Joe");
|
||||
}
|
||||
----
|
||||
|
3
rules/S2301/javascript/metadata.json
Normal file
3
rules/S2301/javascript/metadata.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
17
rules/S2301/javascript/rule.adoc
Normal file
17
rules/S2301/javascript/rule.adoc
Normal file
@ -0,0 +1,17 @@
|
||||
include::../rule.adoc[]
|
||||
|
||||
ifdef::env-github,rspecator-view[]
|
||||
|
||||
'''
|
||||
== Implementation Specification
|
||||
(visible only on this page)
|
||||
|
||||
include::../message.adoc[]
|
||||
|
||||
'''
|
||||
== Comments And Links
|
||||
(visible only on this page)
|
||||
|
||||
include::../comments-and-links.adoc[]
|
||||
|
||||
endif::env-github,rspecator-view[]
|
Loading…
x
Reference in New Issue
Block a user