Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Чем плох? - многопоточность. Например, if (!cell) перевел выполнение вовнутрь блока и отдал управление другому потоку, который вызвал эту же функцию, и тоже перешел в этот блок. После того, как второй поток отдал управление первому, первый все еще находится внутри блока, предполагая, что cell = hil, но на самом деле это уже не так и в зависимости от того, что эта длинная строчка делает / есть ли у нее побочные эффекты может получиться лажа.
Теоретически, это можно сделать из фонового потока, пока элемент не присоединён к дереву визуальных элементов.
В любом случае, я static внутри метода вообще впервые за 6 лет работы увидел. Вот этим он в первую очередь и плох.
Ну я говорил вобщем про статики без синхронизации. Я не знаю Обжекитв-С на столько, чтобы сказать можно ли это вызывать только из определенного места.
Другой момент: в методе класса объявлять статические переменные... это прямо такой ООП что совсем не ООП. Ладно еще это просто функция была, а так, по крайней мере в теории, ожидается, что метод будет работать с классом к которому он принадлежит. Но это опять же общая проблема всего статического. У меня есть устойчивое впечатление, что модификатор "статик" был специально придуман для людей которым было тяжело переучиться с процедурного стиля на ООП, в смысле "поблажка" позволяющая быстро наговнокодить привычным способом вместо того, чтобы разобраться с проблемой и решить ее лучшим способом.
Ну да. Единственный плюс статика по сравнению с глобалками - немного легче найти все места, где его юзают (если он, конечно, не public). В остальном - самая обычная глобалка со всеми её проблемами.
Но статик внутри функции - определённо новое слово в говнокоде.
В любом случае, я static внутри метода вообще впервые за 6 лет работы увидел. Вот этим он в первую очередь и плох.
Другой момент: в методе класса объявлять статические переменные... это прямо такой ООП что совсем не ООП. Ладно еще это просто функция была, а так, по крайней мере в теории, ожидается, что метод будет работать с классом к которому он принадлежит. Но это опять же общая проблема всего статического. У меня есть устойчивое впечатление, что модификатор "статик" был специально придуман для людей которым было тяжело переучиться с процедурного стиля на ООП, в смысле "поблажка" позволяющая быстро наговнокодить привычным способом вместо того, чтобы разобраться с проблемой и решить ее лучшим способом.