Преимущество между "импортировать статический класс. *;"через несколько статических вызовов "class.method ()"? - PullRequest
0 голосов
/ 11 мая 2018

Есть ли преимущество во время выполнения для импорта статических методов по сравнению с вызовом статического class.method () по мере необходимости?

Пример ...

package com;

public class TestMain {
    public static void main(String[] args) {
        TestOne firstTester = new TestOne();
        TestTwo secondTester = new TestTwo();

        firstTester.setVars();
        firstTester.setVarSum();
        firstTester.printVarSum();

        secondTester.setVars();
        secondTester.setVarSum();
        secondTester.printVarSum();
    }
}

package com;

public abstract class TestSubMethods {
    public static int getMethodOne(){return 1;}
    public static int getMethodTwo(){return 2;}
    public static int getMethodThree(){return 3;}
    public static int getMethodFour(){return 4;}
}

----------------------------------------------- --------------------

package com;

public class TestOne {
    private int varOne;
    private int varTwo;
    private int varThree;
    private int varFour;
    private int varSum;

    public void setVars() {
        this.varOne = TestSubMethods.getMethodOne();
        this.varTwo = TestSubMethods.getMethodTwo();
        this.varThree = TestSubMethods.getMethodThree();
        this.varFour = TestSubMethods.getMethodFour();
    }

    public void setVarSum() {
        this.varSum = this.varOne + this.varTwo + this.varThree + this.varFour;
    }

    public void printVarSum() {
        System.out.println("varSum = " + this.varSum);
    }
}

----- против -----

package com;

import static com.TestSubMethods.*;

public class TestTwo {
    private int varOne;
    private int varTwo;
    private int varThree;
    private int varFour;
    private int varSum;

    public void setVars() {
        this.varOne = getMethodOne();
        this.varTwo = getMethodTwo();
        this.varThree = getMethodThree();
        this.varFour = getMethodFour();
    }

    public void setVarSum() {
        this.varSum = this.varOne + this.varTwo + this.varThree + this.varFour;
    }

    public void printVarSum() {
        System.out.println("varSum = " + this.varSum);
    }
}

Между "TestOne" и "TestTwo" Есть ли предпочтительный стиль? Один из них быстрее, чем другой? Я собирался использовать «extends TestSubMethods», но было рекомендовано, чтобы я этого не делал.

1 Ответ

0 голосов
/ 11 мая 2018

Единственное отличие, которое я чувствую, заключается в том, что статический импорт снижает читабельность.
При использовании статического импорта невозможно определить, где существует этот метод.

public void setVars() {
    this.varOne = getMethodOne(); // static method from current class
    this.varTwo = getMethodTwo(); // static method imported from other class
}

Но в то же время при написании тестовых примеров

Assert.assertEquals(1, 1); // not preferred
assertEquals(1, 1); // prferable

Это потому, что мы привыкли к этому, и нас не смущает, где существует assertEquals.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...