2015-01-14 4 views
1

У меня есть VO объект следующего вида в дополнениеСохранение константы в стоимости объектов

public class DummyVO { 
    private int id; 
    private String message; 
    //getters and setters. 

    //set of constants that describe the DummyVO. 
    public static final String MESSAGE_CONST1 = "A-> Const value for message"; 
    public static final String MESSAGE_CONST2 = "B-> Const value for message"; 
} 

мне было интересно, выше ли является хорошей практикой, или это имеет смысл, чтобы переместить константы в отдельный класс. Любой совет будет принят во внимание.

+0

Почему существует закрытая линия? есть ли дополнительная информация? Прокомментируйте, если да. – KodeSeeker

+0

Это голосование считается закрытым, поскольку оно основано прежде всего на мнениях. Вы спрашиваете 100 разработчиков, вы получите ответы на разные вопросы :-) – Ascalonian

+0

спасибо, что прокомментировал .. Нет ли стандартного стандарта или руководства ООП на этом? – KodeSeeker

ответ

3

Существует нет однозначного ответа, кроме вас, не может сказать,

  • JDK имеет константы в интерфейсе и классов.
  • Создание интерфейса или класса только для сохранения констант обычно исключается ИМХО.

Не существует ли установленного стандарта или руководства ООП на этом?

Отсутствует AFAIK. Руководящий принцип должен состоять в том, чтобы раскладывать свои классы так, как вы считаете, имеет смысл.

TestVO общественного класса {

объекты значений Тест обычно помещаются в тестовой области. Стоит отметить, что

  • тестовый код не должен быть таким же лучшим, как производственный код. Иногда делать неожиданные вещи делает хороший тест.
  • Данные, управляемые данными, обычно структурированы по-разному с обычным кодом. т. е. я подозреваю, что вам вообще не нужно определять эту константу, просто используйте их в своем тесте.
+0

Спасибо за ответ. TestVO было плохим именем. Я должен был пойти с DummyVO. Извините за шум. – KodeSeeker

3

мне было интересно, выше ли это хорошая практика, или имеет ли смысл перенести константы в отдельный класс

Это зависит от того, константы имеют смысл оставаться близко к классу.

Например, следующий можно утверждать смысл:

public class Product{ 
    private int id; 
    private String category = DEFAULT_PRODUCT_CATEGORY; 

    // setters and getters, constructors and what not 

    public static final String DEFAULT_PRODUCT_CATEGORY = "Uncategorized"; 
} 

В этом гипотетическом примере, постоянная (DEFAULT_PRODUCT_CATEGORY) тесно связано с полем категории в классе продуктов. Поэтому может иметь смысл иметь эту константу в этом классе. Можно также утверждать, что нам нужен класс Category (или перечисление), который содержит эту константу.

С другой стороны, это не имеет смысла:

public class Product{ 
    private int id; 

    // setters and getters, constructors and what not 

    public static final String ERROR_MESSAGE = "some error"; 
    public static final float PI_APPROXIMATION = 3.14159; 
} 

В этом (хотя и преувеличенными), например, одна константа (ERROR_MESSAGE) является слишком общим, оно не является специфичным к тому, что может представлять класс продукта , Вторая константа (PI_APPROXIMATION) еще хуже, поскольку на самом деле нет причин иметь такую ​​вещь.

Таким образом, нет других рекомендаций, кроме тех, которые отвечают на следующий вопрос: Имеет ли смысл поставить это там?

Константы предназначены для представления что-то для кого-то или то. Таким образом, эти константы должны быть сгруппированы близко к тем вещам, которые их используют, таким образом, что имеет смысл. Классы и интерфейсы - это не просто открытые ящики, которые мы бросаем на них.

Основная проблема в разработке программного обеспечения заключается в разработке вещей, которые имеют смысл. И то, что имеет смысл, характерно для проблемы и ситуации.

+0

Имеет смысл. Благодарю. – KodeSeeker

Смежные вопросы