- 1
- 2
- 3
- 4
int str_length(const char *str)
{
return (int)strlen(str);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+66.4
int str_length(const char *str)
{
return (int)strlen(str);
}
Опенсорс, если чо.
?
Хотя тоже смех..
В конце концов, может возврат нужно было часто равнять к инту? Ну тогда говнистость максимум в отсутствии кастов, и то я не помню, что стрлен возвращает.
Верите или нет, но если в этот метод добавить одну строку, то получится в любом случае легче, выгоднее и проще, чем впихивать эту строку во весь код.
echo 'mv "$1" "${1}~"; cat "${1}~" | sed -e "s#str_length[ ]*(#strlen(#g" > $1; rm -f "${1}~"' > sed.sh
find ./ -name "*.cpp" -exec ./sed.sh {} \;
rm -f sed.sh
Если на ккой-то хрен понадобился именно int, то вполне можно использовать "#define" или вообще без него обойтись. А делать функцию для преобразования типов (size_t -> int) - это как-то немного неприемлемо.
А по поводу "если добавить строчку", то а если убрать три строчки (всю эту функцию), тогда вообще говнокода не будет; но написанно именно так, поэтому обсуждаем именно это. Да, понятно, что возможно это пережитки ранних версий кода, или наоборот сделанно с расчётом на будущее, поэтому вполне может быть, что в данных строках есть смысл, однако, нам об этом неизвестно и конкретно данный вариант кода выглядит странновато.
Так, что жуткий говнокод.
если че, я gamedeveloper...
int str_length(const char *str)
?
Зачем он тебе нужен? O_o
Просто strlen пользуйся. Зачем конструкции городить?
У меня может возникнуть ситуация, когда строка оканчивается не нулем, или когда мне нужно принудительно ограничивать возвращаемое значение, или когда строка может содержать стопицот нулей.
Представь ситуацию: мне от строки нужно умет знать её длину, брать произвольный символ или подстроку. Ну, для примера. Ты довольный берешь какой-нибудь std::wstring и начинаешь потихоньку охуевать от этого вектора на темплэйтах. Так не легче ли эти три метода самому написать?
Кстати, есть вариант, что корпоративная политика запрещает пользоваться stl'ем.
Во-вторых, это кусок из кода замечательной гамалки teeworlds.
— Ambilight-кун.
{
return (long double)strlen(str);
}
Зачем такая большая точность long double для длины строки? На сколько я помню, в char последний раз было 8 бит. А точность 1/8 вместит даже float.
"Здесь" пишеться!!! Говнокодят не только на языке С++, но и на Русском... :)
Хотя я и сам часто тороплюсь... :)
Для русского человек более естественно писать программы на родном языке.
Вот например язык программирования, где можно это сделать на русском:
http://ru.wikipedia.org/wiki/Оберон_(язык_программирования)#.D0.93.D0 .BB.D0.B0.D0.B3.D0.BE.D0.BB