мне было интересно, выше ли это хорошая практика, или имеет ли смысл перенести константы в отдельный класс
Это зависит от того, константы имеют смысл оставаться близко к классу.
Например, следующий можно утверждать смысл:
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) еще хуже, поскольку на самом деле нет причин иметь такую вещь.
Таким образом, нет других рекомендаций, кроме тех, которые отвечают на следующий вопрос: Имеет ли смысл поставить это там?
Константы предназначены для представления что-то для кого-то или то. Таким образом, эти константы должны быть сгруппированы близко к тем вещам, которые их используют, таким образом, что имеет смысл. Классы и интерфейсы - это не просто открытые ящики, которые мы бросаем на них.
Основная проблема в разработке программного обеспечения заключается в разработке вещей, которые имеют смысл. И то, что имеет смысл, характерно для проблемы и ситуации.
Почему существует закрытая линия? есть ли дополнительная информация? Прокомментируйте, если да. – KodeSeeker
Это голосование считается закрытым, поскольку оно основано прежде всего на мнениях. Вы спрашиваете 100 разработчиков, вы получите ответы на разные вопросы :-) – Ascalonian
спасибо, что прокомментировал .. Нет ли стандартного стандарта или руководства ООП на этом? – KodeSeeker