Re: Использование статических вложенных классов при создании закрытых иехархий
От: vsb Казахстан  
Дата: 25.08.14 06:38
Оценка: 5 (1) +1
Можно начать со вложенных классов и потом раскидать их по отдельным файлам, если ситуация начнёт выходить из под контроля. По-мне, если идентификатор получается осмысленным, то лучше вкладывать. ClientMessage.Response звучит красиво и хорошо читается.
Использование статических вложенных классов при создании закрытых иехархий
От: Joie de vivre  
Дата: 23.08.14 12:57
Оценка:
Есть некая иерархия классов — абстрактный класс и несколько наследников, которые объявлены final.
Код, который это реализует, можно написать с использованием статических вложенных классов, а можно каждый класс-наследник вынести на уровень базового, создав его в в отдельном файле.
Вопрос 1:
Какие достоинства/недостатки есть у подхода, который использует статические вложенные классы (если они есть)?
Вопрос 2:
Какой из подходов является более идиоматическим?

Пример кода, использующего статические вложенные классы.
public abstract class ClientMessage {

  ClientMessage() {
  }  

  public static final class Response extends ClientMessage {
    
    public final byte[] payload;

    public Response(byte[] payload) {
      super();
      this.payload = payload;         
    }       
  }    

  public static final class Timeout extends ClientMessage {

    public Timeout() {
      super();
    }
  }
  
  public static final class Fault extends ClientMessage { 
   
    public final Throwable cause;    

    public Fault(Throwable cause) {
      super();
      this.cause = cause;
    }
  }
}
Re: Использование статических вложенных классов при создании закрытых иехархий
От: Blazkowicz Россия  
Дата: 25.08.14 06:08
Оценка:
Здравствуйте, Joie de vivre, Вы писали:

JDV>Вопрос 1:

JDV>Какие достоинства/недостатки есть у подхода, который использует статические вложенные классы (если они есть)?
Иерархия имеет свойство расти и развиваться вместе с проектом. Поэтому наличие всех классов в одном файле раздувает код и усложняет чтение. Увидеть список вложеных классов можно только в IDE, которая это поддерживает.
Ежели эти вложеные классы реализуют какую-то законченую задачу, при этом представляют из себя очень компактный код (например Enum, где каждый элемент может ещё и содержать реализацию.) Тогда вложены классы вполне имееют право на жизнь.

JDV>Вопрос 2:

JDV>Какой из подходов является более идиоматическим?
Смотря что под этим подразумевается. Лучше вложеными классами не увлекаться, особенно если не можешь точно предсказать будет ли этот код развиваться дальше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.