- 1
- 2
- 3
- 4
#define loopv(v) for(int i = 0; i<(v).length(); i++)
#define loopvj(v) for(int j = 0; j<(v).length(); j++)
#define loopvk(v) for(int k = 0; k<(v).length(); k++)
#define loopvrev(v) for(int i = (v).length()-1; i>=0; i--)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+168
#define loopv(v) for(int i = 0; i<(v).length(); i++)
#define loopvj(v) for(int j = 0; j<(v).length(); j++)
#define loopvk(v) for(int k = 0; k<(v).length(); k++)
#define loopvrev(v) for(int i = (v).length()-1; i>=0; i--)
Может я чего недопонимаю?
Это из Cube 2: Sauerbraten
Мистер Хэнки 23.10.2010 20:11 # 0
frp 23.10.2010 21:27 # 0
Остальные, возможно, временный костыль, который забыли выпилить.
Werdn 23.10.2010 22:12 # +1
nil 24.10.2010 10:57 # 0
Например, если реализовать в виде списка, то меняется одна строка на что-то вроде:
for(list_elem* i=v; i; i=i->next)
xXx_totalwar 24.10.2010 11:05 # 0
nil 24.10.2010 11:12 # 0
Werdn 24.10.2010 12:43 # 0
зато макросов там море, некоторые решают задачу через «жпоа»
например генерируется уникальное имя для функции некоторой команды в скриптовом языке при помощи номера строки вызова макроса. Следовательно в разных файлах нельзя объявлять эти самые команды.
Сам не шибко силен в с++, но там выстроена иерархия структур с функциями внутрях (отчего не классы — может так и лучше, не знаю).
И еще много разного, от чего я думаю что я точно идиот.
nil 24.10.2010 12:45 # 0
Это надо у них спросить, чего они извращаются. Может, и объяснят!
danilissimus 06.11.2010 20:00 # 0
Govnoeb 24.10.2010 19:58 # 0
xXx_totalwar 24.10.2010 20:01 # 0
absolut 24.10.2010 12:11 # +2
Govnoeb 24.10.2010 20:01 # 0
absolut 24.10.2010 20:47 # 0
Kornew 24.10.2010 00:05 # 0
absolut 24.10.2010 01:31 # +2
Oops 24.10.2010 17:39 # −4
absolut 25.10.2010 16:21 # 0
Oops 26.10.2010 19:13 # 0
Werdn 24.10.2010 01:40 # 0
Стоит ли это конкретно выправить, написать комментарий, что так делать нельзя и отправить кто там поддержкой всего этого занимается в виде патча?
Govnoeb 24.10.2010 20:10 # 0
Werdn 24.10.2010 20:45 # 0
ctm 24.10.2010 20:47 # 0
absolut 24.10.2010 20:52 # 0
TheCalligrapher 25.10.2010 02:12 # 0
Именно этого пывтались достичь авторы вышепроцитированных макросов. Идея - хорошая и похвальная. Реализация - говнокодовая. Есть такой стиль говнокодирования, когда самый верхний целочисленый цикл - всегда по `i`, вложенный в него - по `j`, а в него - по `k`. Причем независимо от того, по чему именно ведется итерирование. Вот под такой стиль организации циклов и заточены вышеприведенные макросы.
ctm 25.10.2010 07:33 # 0
#define loopiv(i,v) for(int i = 0; i<(v).length(); i++)
Govnoeb 25.10.2010 12:11 # +2
ngry 25.10.2010 15:43 # −7
и многа, многа такога... лососнули тунцов?
absolut 25.10.2010 16:22 # +1
TheCalligrapher 26.10.2010 04:06 # +2
Govnoeb 26.10.2010 16:42 # −1
без вашей помощи хер бы разобрались
3.14159265 29.10.2010 20:56 # +2
так возблагодарим же Кернигана с Ричи за такой подарок говнокоду.