- 1
char* mData=new char[MAX_STRING_LENGTH+1];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+989
char* mData=new char[MAX_STRING_LENGTH+1];
Кто сможет перечислить все ошибки в этом говнокоде?
кстати, можете стать обожателями моей жжжшечки
http://ursusalbus.livejournal.com
а на лурке про говнокод статью на снос поставили - печаль (друзья сегодня хвастались что нашли меня).
#define MAX_STRING_LENGTH (-1)
либо один дибил не сказал другому, что MAX_STRING_LENGTH - это включая замыкающий \0
1)Возможный перерасход памяти, если MAX_STRING_LENGTH больше обычно используемой длинны.
2)Частично требует ручной работы со строкой.
3)Код не безопасен с точки зрения исключений.
4)Массив кастится до указателя и поэтому теряется его длинна. То есть, не смотря на то, что длинна константная, обобщенными методами (например через sizeof или шаблон) получить длину массива нельзя.
5)Нет автоматического контроля за выходом индекса массива за диапазон MAX_STRING_LENGTH.
6)Лучше использовать std::string.
7) +1 не нужен. Нумерация массива начинается с 0. В любом случае, не всегда можно понять по коду MAX_STRING_LENGTH включает \0 или нет. Забыл ли +1 автор или нет? То есть, не всегда возможно определить есть ли ошибка или нет.
и эти люди запрещают нам ковырять в носу!
или "все что нормально для С, плохо для С++"?
не говоря уже о том, что далеко не всегда "лучше использовать std::string"
В случае тезиса о std::string так и есть
ой и дырявая же каптча...
2. может требуется - хз для чего?
3. по 1 строке не видно. можно расставить try/catch чтобы было безопасно.
4. а куда денешься, если C-style, опять же его использование может для чего еще нужно?
5. в коде вообще нет обращений по индексу.
6. лучше конечно, но откуда нам знать, можно ли?
7.вообще не ошибка, т.к. будет работать как для включенного \0, так и не включенного. хотя, 1 лишний байт в куче не гуд конечно.
не мой.
я почему-то сразу вспомнил про http://govnokod.ru/3130
Вы имеете ввиду сайт?