- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
while (true)
{
m_CurrentDevice += delta;
if (m_CurrentDevice < 0)
m_CurrentDevice = devices[DEV_PLATE]-1;
if (m_CurrentDevice > devices[DEV_PLATE]-1)
m_CurrentDevice = 0;
break;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
while (true)
{
m_CurrentDevice += delta;
if (m_CurrentDevice < 0)
m_CurrentDevice = devices[DEV_PLATE]-1;
if (m_CurrentDevice > devices[DEV_PLATE]-1)
m_CurrentDevice = 0;
break;
}
Это конечно написано не специально - в результат целой кучи итераций и переделок. но результата это не отменяет
2Dimarius
ээ, а действительно?..
Вообще "заплаточное" программирование -- это самый большой источник невразумительного кода вида
<выходной параметр> public method1(<входные параметры>) {
<здесь делаем дело>
}
<выходной параметр> public method2(<входные параметры>) {
<здесь делаем тоже самое дело>
}
То есть, два метода с разными названиями делают одно и тоже, и сигнатура одинакова.
Оказывается, что сначала эти методы делали разные вещи, предназначались для использования в разных местах, но после очередной заплаты возникла необходимость в том, чтобы они делали одно и тоже, но выносить это "одно" нельзя в отдельный метод, потому что следующая заплатка вновь может потребовать различного поведения.
Всякие там случаи, когда сначала переменные определяются, а затем перекладываются в другие без изменений. Возникают конструкции, которые имеют инвариантом что угодно, как приведённый цикл: что в него не брось, он ни на что не повлияет.
Зато, в большинстве случаев, можно быстро писать "приблизительный" код. Который что-то там делает, но точно его контракт не известен (тем более невозможно точно знать, что внутри него происходит). Мы думаем, что "потом залатаем".