Pull to refresh

Comments 10

ну вот честное слово, ну что здесь такого, почему Вы решили написать статью?

можно ведь просто опубликовать на 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: И, да, мнения разделились. Минусов ровно столько же, сколько и звезд… Значит кому-то да пригодится.
->тысячи их. Гуглите на английском и будет Вам счастье. Достаточно было запроса 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. Субъективно, хороший код как минимум даёт ответ на этот вопрос без вмешательства автора, а очень хороший — исключает возникновение такого вопроса.
Не могу понять, зачем было писать целую статью, будто про теорему Ферма. Где здесь проблематичность, которую хабравчане могли обсуждать?
Sign up to leave a comment.

Articles