Комментарии 10
ну вот честное слово, ну что здесь такого, почему Вы решили написать статью?
можно ведь просто опубликовать на github или написать в блоге, или как вариант есть сайты со сниппетами, могли бы добавить туда
можно ведь просто опубликовать на github или написать в блоге, или как вариант есть сайты со сниппетами, могли бы добавить туда
Согласен, не говоря уже о том что туже функцию можно переписать раза в два короче и проще, как-то так:
ИМХО, таким вещам лучше на сайтах с сниппетами, потому что если каждый будет постить на хабре каждую свою удачную на его взгляд функцию…
public static String toCamelCase(String string, boolean firstWordToLowerCase) {
boolean isPrevLowerCase = false, isNextUpperCase = !firstWordToLowerCase;
StringBuilder result = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
char currentChar = string.charAt(i);
if(!Character.isLetterOrDigit(currentChar)) {
isNextUpperCase = result.length() > 0 || isNextUpperCase;
} else {
result.append(
isNextUpperCase? Character.toUpperCase(currentChar) :
isPrevLowerCase ? currentChar: Character.toLowerCase(currentChar)
);
isNextUpperCase = false;
}
isPrevLowerCase = result.length() > 0 && Character.isLowerCase(currentChar);
}
return result.toString();
}
ИМХО, таким вещам лучше на сайтах с сниппетами, потому что если каждый будет постить на хабре каждую свою удачную на его взгляд функцию…
Поиск по гуглу выдавал говнокод, заточенный под конкретный формат исходной строки. А запросов таких достаточно много.
Искать нечто подобное по гитхабу считаю извращением, и даже мысль не приходила искать подобное там.
Сайты со сниппетами… Не пользовался как-то раньше, можете показать пример?
PS: И, да, мнения разделились. Минусов ровно столько же, сколько и звезд… Значит кому-то да пригодится.
Искать нечто подобное по гитхабу считаю извращением, и даже мысль не приходила искать подобное там.
Сайты со сниппетами… Не пользовался как-то раньше, можете показать пример?
PS: И, да, мнения разделились. Минусов ровно столько же, сколько и звезд… Значит кому-то да пригодится.
->тысячи их. Гуглите на английском и будет Вам счастье. Достаточно было запроса snippet sites.
А вы не думали пополнить класс org.apache.commons.lang3.StringUtils вашим методом?
Меня всегда удивляло как в одном человеке может одновременно уживаться усердие написать комментарии типа вот этих:
и потом взять и нагородить многоэтажное совершенно нечитабельное условие типа такого:
// Проходимся по всем символам полученной строки
// Устанавливаем флаги.
// Возвращаем полученный результат.
и потом взять и нагородить многоэтажное совершенно нечитабельное условие типа такого:
!Character.isLetterOrDigit(currentChar) ||
(
(
(
Character.isLetter(previousChar) &&
Character.isLowerCase(previousChar)
) ||
Character.isDigit(previousChar)
) &&
Character.isLetter(currentChar) &&
Character.isUpperCase(currentChar)
)
Подробные комменты я пишу редко, в основном комментами отделяю смысловые «блоки» кода, как тут. Это довольно популярная практика…
А условие вполне себе читабельное. Скобочки вынес, на строки разбил, части условия понятны и по названию.
А условие вполне себе читабельное. Скобочки вынес, на строки разбил, части условия понятны и по названию.
Вы путаете «читаемость кода» и «читаемость намерений». Код обычно читают с одной единственной целью — понять намерения автора. Форматирование и выделение блоков безусловно помогает, но это далеко не самое важное. Я легко могу прочитать условие, которое вы написали. Даже если бы вы его не отформатировали, мне ничего не стоило бы отформатировать его за вас — это тупая механическая работа. Что намного сложнее — понять ваше намерение: почему условие именно такое, что именно будет означать если условие вычисляется в true. Субъективно, хороший код как минимум даёт ответ на этот вопрос без вмешательства автора, а очень хороший — исключает возникновение такого вопроса.
Не могу понять, зачем было писать целую статью, будто про теорему Ферма. Где здесь проблематичность, которую хабравчане могли обсуждать?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Универсальная функция toCamelCase() для Java