Как минимизировать объем кода для иерархии - PullRequest
1 голос
/ 03 ноября 2019

Это для обучения. У меня есть интерфейс, который реализован двумя классами, и я должен уменьшить объем кода, который я использую, чтобы сделать вещи более чистыми и менее грязными. В настоящее время код выглядит следующим образом:

public abstract class VClass implements IntFace {

  protected String name;

  public VClass(String name) {
    this.name = name;
  }

  public int value (SClass sc) {//comes from a diff class
    return sc.lookup(name);
  }

  public String getName() {
   return name; 
  }

  @Override
  public String toString() {
   return getName(); 
  }
}

public abstract class NClass extends VClass implements IntFace {

  public Number(String name) {
   super(name);
     this.name = name;
  }

  public int value (SClass sc) {
    return sc.lookup(name);
  }

  public String getName() {
   return name; 
  }

  @Override
  public String toString() {
   return getName(); 
  }
}

public interface IntFace {

  public int value (SClass sc);

  public String toString (int num);
}

Может ли этот код быть более сжатым?

1 Ответ

1 голос
/ 03 ноября 2019

Вы можете удалить следующие вещи из вашего кода:

  1. implements IntFace из NClass декларации. Начиная с NClass extends VClass, он также реализует IntFace.
  2. this.name = name; из NClass конструктора. name инициализируется в конструкторе суперкласса
  3. value и getName методы из NClass. Эти методы реализованы в суперклассе.
  4. public модификатор из объявления методов интерфейса. Методы в интерфейсах по умолчанию public.

Теперь вы также можете сделать name поле private, так как оно больше не используется в NClass.

...