Страницы

Поиск по вопросам

четверг, 20 декабря 2018 г.

Getter для public static final (java). Есть ли смысл?

Имеет ли смысл скрывать 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# уже обсуждался на сайте

Комментариев нет:

Отправить комментарий