Сегодняшняя статья TDWTF начинается с признания автора:
Я не знал, что такое анти-паттерн For-Case, до относительно недавнего времени, когда было множество статей, осуждающих его как анти-паттерн. Я уверен, что я, вероятно, использовал это, в некоторый момент, но я никогда не знал это по имени . Он рассматривается как учебник антипаттерна, который обычно подразумевает недопонимание цикла for, операторов case, решаемой проблемы или некоторой комбинации всех трех.
Затем он поступает так, как будто читатель, естественно, знает, что такое анти-паттерн For-Case без каких-либо дополнительных объяснений.
Но я не! Я не видел «потока статей», о котором говорит Реми, и единственной важной ссылкой, которую я могу найти в Google (кроме статьи Реми), является сообщение в блоге Раймонда Чена об антипаттерне for-if , который, по-видимому, связан , Впрочем, он также не определяет «антишаблон для случая».
Что это за «анти-паттерн For-Case», о котором говорят эти парни, и что делает его анти-паттерном?
источник
Ответы:
«Шаблон» был представлен в более ранней статье Daily WTF. Основная идея заключается в том, что у вас есть
for
циклcase
внутри, который выбирает на основеfor
индексной переменной цикла.Предполагая, что индексную переменную нельзя изменить внутри цикла (что не всегда верно в зависимости от того, какой язык вы используете), небольшой анализ показывает, что выполнение точно такое же, как если бы вы удалили
for
иcase
полностью и все блоки дел были просто выполнены последовательно.источник
Проще говоря, вы вкладываете два разных метода управления потоком, что затрудняет понимание кода.
Если вы видите цикл for, вы обычно предполагаете, что условия цикла будут управлять логикой внутри цикла. Но если вы вложите в него целую инструкцию case со всей его собственной логикой, это уйдет в окно.
источник