Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
А в чем проблема то? ИМХО аффтар не разабрался просто, что этот код делает.
Единственная проблема которую я вижу, это работа со строками длинны 1, вместо работы с char. Но учитывая, то что этот код выполняется один раз когда генерятся/проверяются мапинги, перфоманс не критичен.
аффтар разобрался
я своим стажёрам за такой код сразу отсекаю гендорный фактор 😉
какая разница критично оно к скорости или нет, этот же код ещё потом поддерживать надо
неиспользование char это только первый пункт, второе это
if(capitalize)
{
if(p == null || !p.equals("_"))
{
result.append(c.toUpperCase());
capitalize = false;
p = c;
} else
{
result.append(c.toLowerCase());
capitalize = false;
p = c;
}
} else
{
result.append(c.toLowerCase());
lastDecapitalized = true;
p = c;
}
оно правильно пишется так
lastDecapitalized |= !capitalize;
result.append(capitalize || (p!= null && '_' == p) ? Character.toUpperCase(c) : Character.toLowerCase(c));
capitalize = false;
p = c;
или около того
ну разверну я тренарный оператор, что измениться то?
проблема не в количестве строк, а в том что действия (p = c, capitalize = false;), которые ВСЕГДА выполняются за каким-то лядом прописаны во все ветки условий
Единственная проблема которую я вижу, это работа со строками длинны 1, вместо работы с char. Но учитывая, то что этот код выполняется один раз когда генерятся/проверяются мапинги, перфоманс не критичен.
я своим стажёрам за такой код сразу отсекаю гендорный фактор 😉
какая разница критично оно к скорости или нет, этот же код ещё потом поддерживать надо
неиспользование char это только первый пункт, второе это
if(capitalize)
{
if(p == null || !p.equals("_"))
{
result.append(c.toUpperCase());
capitalize = false;
p = c;
} else
{
result.append(c.toLowerCase());
capitalize = false;
p = c;
}
} else
{
result.append(c.toLowerCase());
lastDecapitalized = true;
p = c;
}
оно правильно пишется так
lastDecapitalized |= !capitalize;
result.append(capitalize || (p!= null && '_' == p) ? Character.toUpperCase(c) : Character.toLowerCase(c));
capitalize = false;
p = c;
или около того
проблема не в количестве строк, а в том что действия (p = c, capitalize = false;), которые ВСЕГДА выполняются за каким-то лядом прописаны во все ветки условий
что и было проделано, остальные изменения - дело вкуса (и наличия автоматического форматтера кода)