Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Такой вот код... Ни строчки пояснений к нему не прилагается.
Метод "_removeDefaultFilters()", а в коде сплошная магия.
Почему в for() $count-2??? А внутри цикла [$i+2]...
В другом же for() $i=2???
В вызове _moveIndexes() второй параметр -2 (минус 2) и это значение внутри фнкции плюсуется!
Вдовершение всего двойной вызов array_pop()...
И всё это покрыто тайной мрака.
Да, так говнокод и пишется. Ой, с count-1 ошибка вылезает! Поставим count-2. Хм, теперь в другом месте не сходится - поставим $i+2. Хм, теперь в конце не то остается, поставим array_pop. Нет, лучше два.
$this->data["Data"]["filters"] — список фильтров. Первые 2 — фильтры «по умолчанию». В _removeDefaultFilters они удаляются. Для этого массив сдвигается на -2, два последних элемента удаляются. $this->data["Data"]["filters"][$i]["filter"]["index"] — индекс фильтра в этом массиве, должен быть равен $i, это корректируется в _moveIndexes.
Оно конечно... но это ведь и есть говнокод. Это говнокод проектного уровня.
>> Первые 2 — фильтры «по умолчанию».
Это вот оно и есть. Сегодня их два, завтра один - залезай поколено в код и правь руками...
Опять же, на чём основано соглашение о "первых"... тоже сильно пахнет.
Ещё. Конкретное значение индексов не должно никого волновать, важно их отношение между собой.
Код не очевиден. К тому же избыточен (и тратит машинный ресурс за зря)
Ах, да... модификатор private это я дописал, собственно код опирался на соглашение что имена методов начинающиеся с '_' указывают на приватность метода. Тем не менее в проекте часто такие имена вызываются извне.
За такой код нужно увольнять с требованием вернуть все зарплатные выплаты. (Это я ещё и под эффектом от остального кода проекта) 🙂
Код-то как бы может и работающий (в определённых условиях), и логика какая-то есть, но писан марсианами. Вызывает улыбку, пока не приходится с ним работать. Нам смешно, а вам сочувствую.
Всё очевидно и ясно. Не так ли?
На самом деле приватность метода даёт шанс надеяться, что эта гарантия обеспечивается по месту вызова и извне не всё так страшно. Но небольшой.
>> Первые 2 — фильтры «по умолчанию».
Это вот оно и есть. Сегодня их два, завтра один - залезай поколено в код и правь руками...
Опять же, на чём основано соглашение о "первых"... тоже сильно пахнет.
Ещё. Конкретное значение индексов не должно никого волновать, важно их отношение между собой.
Код не очевиден. К тому же избыточен (и тратит машинный ресурс за зря)
Ах, да... модификатор private это я дописал, собственно код опирался на соглашение что имена методов начинающиеся с '_' указывают на приватность метода. Тем не менее в проекте часто такие имена вызываются извне.
За такой код нужно увольнять с требованием вернуть все зарплатные выплаты. (Это я ещё и под эффектом от остального кода проекта) 🙂
Код-то как бы может и работающий (в определённых условиях), и логика какая-то есть, но писан марсианами. Вызывает улыбку, пока не приходится с ним работать. Нам смешно, а вам сочувствую.
Полагаю и вы тут не случайно оказались... )