rspec/rules/S110/java/rule.adoc
2020-12-21 15:38:52 +01:00

16 lines
1.1 KiB
Plaintext

Inheritance is certainly one of the most valuable concepts in object-oriented programming. It's a way to compartmentalize and reuse code by creating collections of attributes and behaviors called classes which can be based on previously created classes. But abusing this concept by creating a deep inheritance tree can lead to very complex and unmaintainable source code. Most of the time a too deep inheritance tree is due to bad object oriented design which has led to systematically use 'inheritance' when for instance 'composition' would suit better.
This rule raises an issue when the inheritance tree, starting from `+Object+` has a greater depth than is allowed.
For the parameter of the rule, the following rules are applied:
* `+?+` matches a single character
* `+*+` matches zero or more characters
* `+**+` matches zero or more packages
Examples:
* `+java.fwk.AbstractFwkClass+` will stop count when AbstractFwkClassclass is reached.
* `+java.fwkPackage.*+` will stop count when any member of java.internal package is reached.
* `+java.fwkPackage.**+` same as above, but including sub-packages.