-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
When destructuring the data of an object inside one of its methods, the feature-envy rule does not realize that the newly created variables actually belong to the object.
Example:
const foreign = {
constant1: 5,
constant2: 5,
constant3: 5
};
class Foo {
private ownStuff = {
num1: 42,
num2: 1337,
num3: 1024
};
// Method "doStuff" uses "foreign" more than its own class "Foo". Extract or Move Method from "doStuff" into "foreign". (no-feature-envy)
public doStuff(num: number) {
const { num1, num2, num3, num4, num5, num6 } = this.ownStuff;
return foreign.constant1 + foreign.constant2 + foreign.constant3 + num1 + num2 + num3;
}
// No error
public doOtherStuff(num: number) {
return (
foreign.constant1 +
foreign.constant2 +
foreign.constant3 +
this.ownStuff.num1 +
this.ownStuff.num2 +
this.ownStuff.num3
);
}
}