79 lines
2.0 KiB
Plaintext
79 lines
2.0 KiB
Plaintext
Type names shouldn't be used parameter names of functions and methods.
|
|
|
|
== Why is this an issue?
|
|
|
|
Dart allows to use type names as parameter names of functions and methods.
|
|
|
|
This can be misleading, as the developer may think that the parameter is of the type corresponding to the specified name, but that is not the case.
|
|
|
|
A scenario leading to this issue is, for example, when the developer forgets to give a name to the parameter, or assumes that omitting the name and only specifying the type would be enough to make the parameter of that type (as in C++). That is not the case, as the parameter would be of type `dynamic`.
|
|
|
|
[source,dart]
|
|
----
|
|
void foo(int) { // int is a dynamic parameter, not an integer one
|
|
print(int);
|
|
}
|
|
----
|
|
|
|
Dart also allows to use a type name both as type and as a name in the same declaration, which can be additional source of confusion:
|
|
|
|
[source,dart]
|
|
----
|
|
void foo(int int) { // the type may later change, but the name would remain int
|
|
print(int);
|
|
}
|
|
----
|
|
|
|
== How to fix it
|
|
|
|
Give the parameter a different name, describing its purpose.
|
|
|
|
Make the type of the parameter explicit, if the parameter was not meant to be `dynamic`.
|
|
|
|
=== Code examples
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,dart,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
void foo(int) {
|
|
print(int);
|
|
}
|
|
----
|
|
|
|
==== Compliant solution
|
|
|
|
[source,dart,diff-id=1,diff-type=compliant]
|
|
----
|
|
void foo(String text) {
|
|
print(text);
|
|
}
|
|
----
|
|
|
|
== Resources
|
|
|
|
=== Documentation
|
|
|
|
* Dart Docs - https://dart.dev/tools/linter-rules/avoid_types_as_parameter_names[Dart Linter rule - avoid_types_as_parameter_names]
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
* The parameter name '<parameter name>' matches a visible type name.
|
|
|
|
=== Highlighting
|
|
|
|
The identifier of the parameter name, in the parameter list of a function or method declaration: e.g. `int` in `void foo(int) ...`.
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
endif::env-github,rspecator-view[]
|
|
|