Skip to content

MobilePhoneWithFeatureEnvy test

Mikhail Pravilov edited this page Jul 3, 2018 · 1 revision

Test is similar to MoveMethod test, but is taken from book about code smells. Test case is more real than in other tests. As a refactoring it is suggested to move getMobilePhoneNumber() to Phone class.

Expected refactorings
Member Move to
Customer.getMobilePhoneNumber Phone
package mobilePhoneWithFeatureEnvy;

public class Customer {
    private Phone mobilePhone;

    public String getMobilePhoneNumber() {
        return "(" +
                mobilePhone.getAreaCode() + ") " +
                mobilePhone.getPrefix() + "-" +
                mobilePhone.getNumber();
    }
}
package mobilePhoneWithFeatureEnvy;

public class Phone {
    private final String unformattedNumber;

    public Phone(String unformattedNumber) {
        this.unformattedNumber = unformattedNumber;
    }

    public String getAreaCode() {
        return unformattedNumber.substring(0, 3);
    }

    public String getPrefix() {
        return unformattedNumber.substring(3, 6);
    }

    public String getNumber() {
        return unformattedNumber.substring(6, 10);
    }
}
Clone this wiki locally