-
Notifications
You must be signed in to change notification settings - Fork 654
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Добавляет первые разделы рецепта - «Выразительный реакт - рефакторинг» #5295
base: main
Are you sure you want to change the base?
Conversation
Превью контента из опубликовано. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Несколько мелких правочек. Жду продолжения =)
@@ -0,0 +1,54 @@ | |||
--- | |||
title: "Выразительный React: рефакторинг везде" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
title: "Выразительный React: рефакторинг везде" | |
title: "Выразительный React: рефакторинг" |
Предлагаю чуть убавить игривости в заголовке =)
## Тяжёлый монолитный компонент | ||
В предыдущей статье мы создали компонент `Maze` для отображения лабиринта. Сейчас внутри этого компонента содержатся: | ||
|
||
* утилиты для генерации случайных чисел и стен лабиринта | ||
* типы для работы с лабиринтом | ||
* функция для генерации анимации | ||
* состояние стен лабиринта | ||
* собачка | ||
* логика перемещения собачки | ||
* компонент кнопки «Апорт» | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
## Тяжёлый монолитный компонент | |
В предыдущей статье мы создали компонент `Maze` для отображения лабиринта. Сейчас внутри этого компонента содержатся: | |
* утилиты для генерации случайных чисел и стен лабиринта | |
* типы для работы с лабиринтом | |
* функция для генерации анимации | |
* состояние стен лабиринта | |
* собачка | |
* логика перемещения собачки | |
* компонент кнопки «Апорт» | |
## Тяжёлый монолитный компонент | |
В предыдущей статье мы создали компонент `Maze` для отображения лабиринта. Сейчас внутри этого компонента содержатся: | |
- утилиты для генерации случайных чисел и стен лабиринта; | |
- типы для работы с лабиринтом; | |
- функция для генерации анимации; | |
- состояние стен лабиринта; | |
- собачка; | |
- логика перемещения собачки; | |
- компонент кнопки «Апорт». | |
* логика перемещения собачки | ||
* компонент кнопки «Апорт» | ||
|
||
В своей известной книге, «Рефакторинг», Мартин Фаулер называет подобное «code smell (признак плохого кода)». |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В своей известной книге, «Рефакторинг», Мартин Фаулер называет подобное «code smell (признак плохого кода)». | |
В своей известной книге «Рефакторинг» Мартин Фаулер называет подобное «code smell» (признак плохого кода). |
|
||
В своей известной книге, «Рефакторинг», Мартин Фаулер называет подобное «code smell (признак плохого кода)». | ||
|
||
Когда в компоненте находится слишком много логики это _может быть_ (а может и не быть) признаком плохой организации кода. В этом случае с организацией действительно не все в порядке, например потому что компонент собачка слишком сильно связан с компонентом лабиринта. Мы не можем отправлять собачку к другим приключениям, а если нам захочется заменить собачку на котика нам зачем-то придется это делать внутри компонента лабиринта. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Когда в компоненте находится слишком много логики это _может быть_ (а может и не быть) признаком плохой организации кода. В этом случае с организацией действительно не все в порядке, например потому что компонент собачка слишком сильно связан с компонентом лабиринта. Мы не можем отправлять собачку к другим приключениям, а если нам захочется заменить собачку на котика нам зачем-то придется это делать внутри компонента лабиринта. | |
Когда в компоненте находится слишком много логики это _может быть_ (а может и не быть) признаком плохой организации кода. В этом случае с организацией действительно не всё в порядке. Например, потому что компонент собачка слишком сильно связан с компонентом лабиринта. Мы не можем отправлять собачку к другим приключениям, а если нам захочется заменить собачку на котика нам зачем-то придется это делать внутри компонента лабиринта. |
Когда в компоненте находится слишком много логики это _может быть_ (а может и не быть) признаком плохой организации кода. В этом случае с организацией действительно не все в порядке, например потому что компонент собачка слишком сильно связан с компонентом лабиринта. Мы не можем отправлять собачку к другим приключениям, а если нам захочется заменить собачку на котика нам зачем-то придется это делать внутри компонента лабиринта. | ||
|
||
|
||
## Проектируем решение |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
## Проектируем решение | |
## Проектируем решение | |
|
||
|
||
## Проектируем решение | ||
Хочется разделить компонент на несколько частей, какими могли бы быть эти части и какие у них могли бы быть обязанности? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Хочется разделить компонент на несколько частей, какими могли бы быть эти части и какие у них могли бы быть обязанности? | |
Хочется разделить компонент на несколько частей. Какими могли бы быть эти части и какие у них могли бы быть обязанности? |
## Проектируем решение | ||
Хочется разделить компонент на несколько частей, какими могли бы быть эти части и какие у них могли бы быть обязанности? | ||
|
||
Воспользуемся популярным трюком с разделением компонентов на простые и сложные. Простые компоненты не содержат никакой логики кроме логики своего отображения. Умные компоненты реализуют какие-то части логики и передают простым компонентам данные для отображения. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Воспользуемся популярным трюком с разделением компонентов на простые и сложные. Простые компоненты не содержат никакой логики кроме логики своего отображения. Умные компоненты реализуют какие-то части логики и передают простым компонентам данные для отображения. | |
Воспользуемся популярным трюком с разделением компонентов на простые и сложные. _Простые компоненты_ не содержат никакой логики кроме логики своего отображения. _Сложные компоненты_ реализуют какие-то части логики и передают простым компонентам данные для отображения. |
Пинг =) |
А для этого раздела уже полностью прописан план? Ну то есть от статьи к статье будет идти какая-то связь или не обязательно? Мне просто кажется тема про паттерны в реакт сюда хорошо подошла бы. |
Это ранний драфт, который будет ооочень долго ползти в направлении продакшена :)
Любые предложения приветствуются