- 1
char* mData=new char[MAX_STRING_LENGTH+1];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+989
char* mData=new char[MAX_STRING_LENGTH+1];
Кто сможет перечислить все ошибки в этом говнокоде?
Говногость 11.11.2011 08:39 # 0
greno 11.11.2011 08:44 # +2
bugmenot 11.11.2011 09:10 # +7
lucidfoxGovno 11.11.2011 10:51 # −3
ursus 16.11.2011 09:49 # 0
lucidfoxGovno 16.11.2011 10:51 # −1
TarasB 16.11.2011 12:42 # +5
eth0 16.11.2011 13:10 # 0
ursus 16.11.2011 13:37 # −1
кстати, можете стать обожателями моей жжжшечки
http://ursusalbus.livejournal.com
а на лурке про говнокод статью на снос поставили - печаль (друзья сегодня хвастались что нашли меня).
lucidfoxGovno 16.11.2011 13:40 # −1
eth0 16.11.2011 18:30 # 0
TarasB 16.11.2011 18:44 # 0
defecate-plusplus 11.11.2011 09:30 # +2
#define MAX_STRING_LENGTH (-1)
либо один дибил не сказал другому, что MAX_STRING_LENGTH - это включая замыкающий \0
roman-kashitsyn 11.11.2011 09:36 # +2
Говногость 11.11.2011 09:37 # −3
1)Возможный перерасход памяти, если MAX_STRING_LENGTH больше обычно используемой длинны.
2)Частично требует ручной работы со строкой.
3)Код не безопасен с точки зрения исключений.
4)Массив кастится до указателя и поэтому теряется его длинна. То есть, не смотря на то, что длинна константная, обобщенными методами (например через sizeof или шаблон) получить длину массива нельзя.
5)Нет автоматического контроля за выходом индекса массива за диапазон MAX_STRING_LENGTH.
6)Лучше использовать std::string.
7) +1 не нужен. Нумерация массива начинается с 0. В любом случае, не всегда можно понять по коду MAX_STRING_LENGTH включает \0 или нет. Забыл ли +1 автор или нет? То есть, не всегда возможно определить есть ли ошибка или нет.
bugmenot 11.11.2011 09:43 # +1
и эти люди запрещают нам ковырять в носу!
Говногость 11.11.2011 10:08 # −1
Setry 11.11.2011 10:23 # +1
bugmenot 11.11.2011 10:25 # +1
Setry 11.11.2011 10:40 # +1
или "все что нормально для С, плохо для С++"?
не говоря уже о том, что далеко не всегда "лучше использовать std::string"
bugmenot 11.11.2011 12:20 # 0
В случае тезиса о std::string так и есть
ой и дырявая же каптча...
absolut 11.11.2011 10:44 # +2
bugmenot 11.11.2011 12:19 # +2
absolut 11.11.2011 10:43 # +3
ctm 11.11.2011 10:54 # +2
2. может требуется - хз для чего?
3. по 1 строке не видно. можно расставить try/catch чтобы было безопасно.
4. а куда денешься, если C-style, опять же его использование может для чего еще нужно?
5. в коде вообще нет обращений по индексу.
6. лучше конечно, но откуда нам знать, можно ли?
7.вообще не ошибка, т.к. будет работать как для включенного \0, так и не включенного. хотя, 1 лишний байт в куче не гуд конечно.
saab 12.11.2011 02:07 # 0
ursus 16.11.2011 09:52 # +1
lucidfoxGovno 16.11.2011 10:51 # 0
ursus 16.11.2011 12:13 # 0
не мой.
absolut 11.11.2011 10:39 # 0
я почему-то сразу вспомнил про http://govnokod.ru/3130
roman-kashitsyn 11.11.2011 10:44 # +1
TarasB 11.11.2011 10:56 # 0
absolut 11.11.2011 11:07 # +2
istem 11.11.2011 10:50 # +5
Вы имеете ввиду сайт?
Lure Of Chaos 11.11.2011 12:21 # +4
lucidfoxGovno 11.11.2011 12:21 # −4
d_dev 11.11.2011 13:03 # 0