Glavin001/tslint-clean-code

feature-envy doesn't take destructuring of own data into account.

Open

#38 ouverte le 10 janv. 2018

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)TypeScript (15 forks)github user discovery
buggood first issuehelp wanted

Métriques du dépôt

Stars
 (175 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

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
        );
    }
}

Guide contributeur