Приведи пример использования паттерна Strategy

Ответ

Ответ не найден

Ответ 18+ 🔞

Да ты посмотри, что за пиздопроебибна творится в мире фронтенда! Сидишь ты такой, пишешь на React, всё вроде красиво, а потом — бац! — и хуй с горы: приложение тормозит так, что хоть волосы на жопе рви. И начинаешь копать, а там, ёпта, оказывается, проблема не в твоём гениальном коде, а в какой-то хуйне, которая сидит глубоко в зависимостях. Вот смотри, классика жанра. У тебя есть компонент, который рендерит список. Всё просто, казалось бы. ```jsx function TodoList({ todos }) { return (
    {todos.map(todo => ( ))}
); } ``` И вроде бы всё ок, но потом ты замечаешь, что при добавлении новой задачи всё начинает **бздеть** и подтормаживать. Ты такой: «Какого хуя? Я же `key` передаю!». А потом выясняется, что твой `TodoItem` — это, блядь, целая вселенная, которая принимает `onClick` и ещё кучу пропсов, и он перерисовывается, даже когда не должен. **Сам от себя охуел**. И вот тут начинается самое интересное. Ты лезешь в документацию, читаешь про `React.memo`, `useMemo` и `useCallback`. И понимаешь, что твой красивый колбэк, который ты передаёшь в каждый айтем, создаётся заново при каждом рендере родителя. **Волнение ебать** начинается настоящее. ```jsx // Было — пиздец как плохо function TodoList({ todos, onTodoClick }) { return (
    {todos.map(todo => ( onTodoClick(todo.id)} /> ))}
); } // Стало — уже лучше, но не идеал function TodoList({ todos, onTodoClick }) { const handleClick = useCallback((id) => { onTodoClick(id); }, [onTodoClick]); return (
    {todos.map(todo => ( ))}
); } ``` Но и это, сука, не панацея! Потому что если `onTodoClick` приходит сверху как пропс и тоже меняется каждый раз, то твой `useCallback` нихуя не сработает, он будет создавать новую функцию на каждый чих. **Доверия ебать ноль** ко всем этим оптимизациям. И вот ты сидишь, чешешь репу, и думаешь: «Э, бошка, думай!». А вся суть в том, что иногда нужно просто **да похуй** на микрооптимизации, пока нет реальных проблем с производительностью. Но если уж полез — то копай до конца, иначе получится **хитрая жопа**, которая вроде бы и оптимизирована, а на деле только сложнее для понимания. Главный вывод, чувак: не делай из своей кодобазы **манду с ушами**, пытаясь всё запомоизировать. Сначала измерь, потом оптимизируй. А то можно так **впендюрить** себе, что потом полгода будешь разгребать. **Ёперный театр**, а не разработка.