68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
Extension identifier, when present, should be in PascalCase.
|
|
|
|
== Why is this an issue?
|
|
|
|
Extensions are a way to add functionality to existing classes. As such, they contain methods, getters, and setters, in the same way classes do.
|
|
|
|
Therefore, it makes sense to adopt the same naming convention as for classes, which is https://en.wikipedia.org/wiki/Camel_case[PascalCase] (a.k.a. UpperCamelCase).
|
|
|
|
This makes the code more homogeneous and doesn't mislead developers into thinking that the extension is a variable or a function.
|
|
|
|
== How to fix it
|
|
|
|
=== Code examples
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,dart,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
extension my_extension on String { // lower_snake_case
|
|
void myMethod() {
|
|
print('Hello');
|
|
}
|
|
}
|
|
----
|
|
|
|
==== Compliant solution
|
|
|
|
[source,dart,diff-id=1,diff-type=compliant]
|
|
----
|
|
extension MyExtension on String { // UpperCamelCase
|
|
void myMethod() {
|
|
print('Hello');
|
|
}
|
|
}
|
|
----
|
|
|
|
== Resources
|
|
|
|
=== Documentation
|
|
|
|
* Dart Docs - https://dart.dev/tools/linter-rules/camel_case_extensions[Dart Linter rule - camel_case_extensions]
|
|
* Dart Docs - https://dart.dev/language/extension-methods[Language - extension methods]
|
|
* Wikipedia - https://en.wikipedia.org/wiki/Camel_case[Camel case]
|
|
|
|
=== Related rules
|
|
|
|
* S101 - Class names should comply with a naming convention
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
* The extension name '<extension identifier>' isn't an UpperCamelCase identifier.
|
|
|
|
=== Highlighting
|
|
|
|
* The identifier of the extension.
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
endif::env-github,rspecator-view[]
|