−5
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
/* Где-то определена gfSets, которая может изменяться другим потоком */
void sort_items(ITEMSTRUCT **pItemArray, size_t nItems)
{
ASSERT(pGlobalItemCache);
if(pItemArray == NULL) return;
gfSets |= FSORTING;
for(size_t d = (nItems >> 1); d > 0; d >>=1) {
for(size_t i = d; i < nItems; ++i) {
ITEMSTRUCT *pTemp = pItemArray[i];
size_t j = i;
while(j >= d) {
if(gfSets & FBREAKALL) goto Stop;
if(compare_by_range(pTemp->Range, pItemArray[j - d]->Range) < 0) pItemArray[j] = pItemArray[j - d];
else break;
j -= d;
}
pItemArray[j] = pTemp;
}
}
Stop:
gfSets &= ~FSORTING;
}
Есть мнение, что использовать goto является дурным тоном. Отчасти да, это так, но это ведь как в той поговорке: "Доверь, говорят, дураку стеклянный хуй, так он и хуй разобьет, и жопу порежет, да еще и губы поцарапает". Поэтому, если использовать goto в меру, а также ради улучшения читаемости кода или крайней необходимости, то в этом нет ничего позорного. Например, в примере, что выше, без goto инструкции gfSets &~ FSORTING и return пришлось бы писать два раза. Напрашивается вопрос: Нахуя?! Ведь есть goto.
Лично я всегда использовал, использую, и буду использовать goto там, где считаю нужным, и мне похую на всякие там "Clean code", о которых говорилось в комментах поста, что ниже.
З.Ы. Старайтесь избегать "оптимизаторов", подобных ASD 77
Запостил: Graviton,
08 Апреля 2017
Fike 08.04.2017 11:56 # −13
Antervis 08.04.2017 12:09 # −10
Но здесь goto не особо нужен, скажем, можно сделать так:
Общий объем кода даже не изменится
bormand 08.04.2017 12:20 # −16
dm_fomenok 10.04.2017 15:34 # −13
Я бы посоветовал не избегать его, а послать, откровенно нахуй. Как он уже заебал своими "познаниями". Долбаёб нахуй.
ASD_77 10.04.2017 16:41 # −15
ГОТО - гавно, ГОТОКОДЕРЫ - Гавнокодеры :)
dxd 10.04.2017 17:51 # −11
AntiSpam 10.04.2017 17:52 # −37
Пойдёшь в волонтёры? Прославь своё имя.
dxd 10.04.2017 18:12 # −12
ASD_77 10.04.2017 18:34 # −15
bormand 10.04.2017 18:52 # −11
ASD_77 10.04.2017 18:59 # −16
dxd 10.04.2017 19:51 # −12