Имеет ли смысл скрывать public static final константы и делать геттер либо нет? Вышел небольшой спор... Спасибо! :)
Ответ
Универсальное правило ровно одно: следуйте семантике, смыслу кода.
Если вы экспортируете константу, смело выставляйте наружу public static final. Например:
class GlobalConstants
{
public static final int DAYS_IN_WEEK = 7;
}
Если же вы экспортируете что-то, за чем есть или может быть логика, что может поменяться, сделайте это лучше свойством, чтобы потом можно было безболезненно для клиентов вашего кода эту логику поменять.
class MyCar
{
private static final String manufacturerName = "ЗАЗ";
public String getManufacturer()
{
return manufacturerName;
}
}
Если завтра вы пересядете на "Феррари", у клиентов, которые скомпилировались со старой версией вашей библиотеки, не будет проблем. (А вот если бы ваша строка была константой, она оказалась бы жёстко вкомпилированной в код клиентов, и они бы продолжали считать, что вы ездите на "Запорожце".)
Подобный вопрос для C# уже обсуждался на сайте
Комментариев нет:
Отправить комментарий