Вы используете StringUtils.EMPTY
вместо ""
?
Я имею в виду либо возвращаемое значение, либо если вы устанавливаете значение переменной String. Я не имею в виду сравнение, потому что мы используемStringUtils.isEmpty()
java
string
apache-commons
keuleJ
источник
источник
StringUtils.EMPTY
. Это дает понять, что используется пустая строка, а не какая-то лень («О, это требует String, давайте пройдем""
»). Если кто-то обнаружит этот фрагмент кода, он дважды подумает, прежде чем вносить изменения. Кроме того, если бы ониStringUtils.EMPTY
были определены как ваша собственная переменная, напримерMyClass.EMPTY
, внесение изменений в «это представление пустоты» потребовало бы изменения одной строки кода. Вы можете, например, заменить его"<empty>"
на пустую строку""
. Но я думаю, что это заходит слишком далеко.EMPTY
не имеет никакого значения, которого еще не имеет сама пустая строка. В частности, он не документирует, почему вы решили использовать пустую строку в этом конкретном случае. Это не отличается от присвоения имени константеONE
и притворства, что есть смысл использовать эту константу вместо значения.Я использую
StringUtils.EMPTY
, для сокрытия литерала, а также для выражения того, чтоreturn StringUtils.EMPTY
полностью ожидалось, и должна возвращать пустую строку,""
может привести к предположению, что""
его можно легко изменить на что-то еще и что это, возможно, было всего лишь ошибкой. Думаю,EMPTY
выразительнее.источник
StringUtils.EMPTY
менее выразительным, чем""
.""
более выразительным, чем использованиеStringUtils.EMPTY
, и то, что вы сказали, не изменило моего мнения по этому поводу. Я почти могу поверить в то, что разработчики очень, очень редко пишут пустой строковый литерал неправильно, но я возьму ясность строкового литерала за один раз на миллион (и, надеюсь, легко обнаруживается при тестировании ... ) ошибка, лично.Нет, просто используйте
""
.Буквально
""
чистый, как кристалл. Нет никакого недопонимания относительно того, что имелось в виду. Я бы не знал, зачем вам для этого нужна константа класса. Я могу только предположить, что эта константа используется во всем пакете, содержащемStringUtils
вместо""
. Однако это не значит, что вы должны его использовать.Если на тротуаре есть камень, его не нужно бросать.
источник
Я поражен тем, как много людей счастливы слепо предполагать, что "" действительно пустая строка и не содержит (случайно?) Каких-либо замечательных невидимых и непробельных символов Unicode. Ради любви ко всему хорошему и порядочному, всегда используйте ПУСТОЙ.
источник
Я добавлю сюда свои два цента, потому что я не вижу, чтобы кто-нибудь говорил об
String
интернировании и инициализации класса:String
литералы в источниках Java интернированы, что делает любой""
иStringUtils.EMPTY
тот же объектStringUtils.EMPTY
может инициализироватьStringUtils
класс, поскольку он обращается к своему статическому членуEMPTY
только в том случае, если он не объявленfinal
(JLS специфичен для этой точки). Однако это окончательный вариант, поэтому он не будет инициализировать класс.org.apache.commons.lang3.StringUtils.EMPTY
См. Соответствующий ответ по интернированию строк и инициализации класса со ссылкой на JLS 12.4.1 .
источник
StringUtils
класса.Я не очень люблю его использовать,
return "";
т.к. короче чемreturn StringUtils.EMPTY
.Однако одно ложное преимущество его использования заключается в том, что если вы вводите
return " ";
вместоreturn "";
, вы можете столкнуться с другим поведением (относительно того, правильно ли вы тестируете пустую строку или нет).источник
""
, я ненавижу набирать одну и ту же буквальную строку более одного раза, даже иногда только один раз. Я бы предпочел объявить константы в Constants.java , но не повторять их везде в исходном коде.return "";
это уродливо, Я ПРЕДПОЧИТАЮ использовать returnStringUtil.EMPTY
(объявленный в моем собственном классе StringUtil , а НЕ Apache StringUtils ).Если ваш класс не использует что-либо еще из общего пользования, было бы жаль иметь эту зависимость только для этого магического значения.
Дизайнер StringUtils интенсивно использует эту константу, и это правильно, но это не означает, что вы должны использовать и ее.
источник
Честно говоря, я не вижу в этом особого смысла. Если вы хотите сравнить, например, с пустой строкой, просто используйте
StringUtils.isNotEmpty(..)
источник
StringUtils.isNotEmpty(..)
также выполняет нулевую проверку, поэтому это не совсем то же самое, что сравнение с пустой строкой.null
? в качестве 2-го аргументаequals
, но результат будет тот же -false
isNotEmpty
является противоположностью"".equals(…)
, следовательно, тот факт, что он будет рассматриватьсяnull
как пустая строка , отличается от сравнения с пустой строкой,"".equals("")
→true
,"".equals(null)
→false
,StringUtils.isNotEmpty("")
→false
,StringUtils.isNotEmpty(null)
→false
. Если вы просто хотите узнать, пуста ли строка, используйтеstring.isEmpty()
, который имеет правильное поведение: возвращает,true
если это пустая строка, и бросает,NullPointerException
если строкаnull
…Я нахожу
StringUtils.EMPTY
полезным в некоторых случаях для разборчивости. В частности, с:Тернарный оператор, например.
item.getId() != null ? item.getId() : StringUtils.EMPTY;
Также с помощью константы создается ссылка на
StringUtils.EMPTY
. В противном случае, если вы попытаетесь создать экземпляр строкового литерала""
каждый раз, когда JVM должна будет проверять, существует ли он уже в пуле строк (что, вероятно, будет, поэтому никаких дополнительных накладных расходов на создание экземпляра). Разумеется, использованиеStringUtils.EMPTY
позволяет избежать проверки пула строк?источник
StringUtils.EMPTY
константа разрешается во время компиляции.StringUtil.EMPTY
это константа времени компиляции, ссылка на нее компилируется в тот же байт-код, что и при""
прямом использовании . Кроме того, я не понимаю, почему тернарный оператор должен иметь какое-либо значение. Это выражение похоже на любое другое. Любая причина использовать или не использовать именованную константу также применима к тернарному оператору.Нет, потому что мне нужно еще написать. И пустая строка является независимой от платформы пустой (в Java).
File.separator
лучше, чем "/" или "\".Но делай как хочешь. Вы не можете получить опечатку вроде
return " ";
источник
someString.isEmpty()
вместо этого пишут нормальные программисты .Да, в этом есть смысл. Возможно, это не единственный путь, но я очень мало вижу в том, чтобы сказать, что это «не имеет смысла».
По моему мнению:
источник
It will still require changing everywhere if you don't define your own variable and use it in multiple places.
вы собираетесь заменить пустую строку на другую?