Используете ли вы StringUtils.EMPTY
вместо ""
?
Я имею в виду либо как возвращаемое значение, либо если вы задаете значение переменной String. Я не имею в виду для сравнения, потому что там мы используем StringUtils.isEmpty()
Используете ли вы StringUtils.EMPTY
вместо ""
?
Я имею в виду либо как возвращаемое значение, либо если вы задаете значение переменной String. Я не имею в виду для сравнения, потому что там мы используем StringUtils.isEmpty()
Конечно нет. Вы действительно думаете, что "" недостаточно ясно?
Константы имеют по существу 3 варианта использования:
Здесь не применяются.
Я использую StringUtils.EMPTY
для скрытия литерала, а также для выражения того, что return StringUtils.EMPTY
был полностью ожидаемым, и там должна была возвращаться пустая строка, ""
может привести к предположению, что ""
можно легко изменить во что-то иначе, и это может быть только ошибка. Я думаю, что EMPTY
более выразителен.
Нет, просто используйте ""
.
Литерал ""
прозрачен как кристалл. Нет никакого недоразумения относительно того, что подразумевалось. Я бы не знал, зачем вам нужна константа класса. Я могу только предположить, что эта константа используется во всем пакете, содержащем StringUtils
вместо ""
. Это не значит, что вы должны использовать его.
Если на тротуаре есть скала, вам не нужно ее бросать.
Мне не очень нравится использовать его, поскольку return "";
короче return StringUtils.EMPTY
.
Однако одно ложное преимущество использования этого заключается в том, что если вы наберете return " ";
вместо return "";
, вы можете столкнуться с другим поведением (относительно правильной проверки пустой строки или нет).
Если ваш класс не использует ничего другого из сообщества, то было бы жаль, что эта зависимость зависит только от этого волшебного значения.
Дизайнер StringUtils сильно использует эту константу, и это правильно, но это не значит, что вы также должны использовать ее.
Я добавлю свои два цента здесь, потому что я не вижу, чтобы кто-то говорил о String
interning и инициализации класса:
String
в источниках Java интернированы, делая любые ""
и StringUtils.EMPTY
тем же самым объектомStringUtils.EMPTY
может инициализировать класс StringUtils
, поскольку он обращается к его статическому члену EMPTY
, только если он не объявлен final
(JLS специфичен в этой точке)См. связанный ответ на интернирование строк и Инициализация класса, ссылаясь на JLS 12.4.1.
Я поражен тем, как много людей счастливы слепо предположить, что "" действительно пустая строка и не случайно (случайно) содержит любой из Unicode замечательных невидимых и непересекающихся символов. Для любви ко всему, что хорошо и порядочно, используйте ПОМОЩЬ, когда можете.
Нет, потому что мне больше писать. И пустая строка является независимой от plattform (на Java).
File.separator
лучше, чем "/" или "\".
Но делай, как хочешь. Вы не можете получить опечатку типа return " ";
Честно говоря, я тоже не вижу большого смысла. Если вы хотите сравнить egainst с пустой строкой, просто используйте StringUtils.isNotEmpty(..)
Я нахожу StringUtils.EMPTY
полезным в некоторых случаях для удобочитаемости. В частности, с:
Тернарный оператор, например.
item.getId() != null ? item.getId() : StringUtils.EMPTY;
Также с помощью константы создается ссылка на StringUtils.EMPTY
. В противном случае, если вы попытаетесь создать экземпляр String ""
каждый раз, когда JVM будет проверять, существует ли он в пуле String (что, скорее всего, будет, так что дополнительные затраты на создание экземпляра не будут). Конечно, использование StringUtils.EMPTY
позволяет избежать проверки пула строк?