- 1
- 2
- 3
- 4
- 5
// Этот говняжный кусочек кода лечит работу козьих шариков.
for iter := 0 to staticSet.fields.Count - 1 do
if staticSet.fields[i].IsNull then
;
// Конец говняжного кусочка кода
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+98.5
// Этот говняжный кусочек кода лечит работу козьих шариков.
for iter := 0 to staticSet.fields.Count - 1 do
if staticSet.fields[i].IsNull then
;
// Конец говняжного кусочка кода
Вкратце: staticSet - декоратор (обертка) для ADO Recordset; чтобы синхронизировать обертку и носителя, надо было дернуть любой метод. Автор выбрал R/O property IsNull. Но каков вброс. Комментарии прошу считать частью кода. Если учесть, что плотность комментариев 1 на примерно 60 КБ кода.
Вброс, камрад, в том, что комментарий - авторский. Тот человек, который писал эти три строчки - написал комментарий. Во-первых, обычно он не пишет комментарии. Во-вторых, я при отлове жука, наткнувшись на этот комментарий, долго думал, что такое "козьи шарики". Вброс в этом. В-третьих, как справедливо замечено, можно было дернуть одно поле, чтобы синхронизировалась вся обертка.
if ... then
;
Шаришь. Мне еще нравится название iter.
"Академически" такие циклы пишутся примерно так:
with staticSet do
for i := Fields.Count - 1 do
Fields[i].IsNull;
При таком подходе @staticSet попадает в EDI, propget Fields, возвращающий поле, вызывается inline, i рискует попасть в ECX, propget Count не вызывается на каждой итерации, и ненужная пара TEST EAX,EAX / JZ @..., порождаемая IF, отсутствует. Ежу ясно, что в конкретном случае - фигня. А если весь проект сделан из такой фигни - становится печально.
ессна.
То есть, ты хочешь сказать, что границы цикла вычисляются один раз перед его началом, а не на каждой итерации?
Разбегайся, камрад. И найди стену покрепче.
Настоящий говнокод - в этой обёртке.
Клин клином вышибают.
Я надеюсь, ты плюс поставил? ;)