Size: a a a

2020 March 22

🦉⁣

🦉 ⁣ in ☄️ effector
The Fallen Phoenix
Есть еще такой момент: а не стоит ли файлы caller, bind, validate, throw, is, forIn, defer в файл utils.js превратить?
Telegram
Сова пишет…
Почему директории utils и helpers это свалка?

Начнем с того, как они появляются. Во время разработки проекта, программист старается выносить повторяющиеся куски кода в функции и переиспользовать их. В какой-то момент, в двух разных модулях требуется одна и та же функция, неопытный разработчик решает вынести функцию в отдельный модуль. Но почему-то останавливается на этом решении, создавая директорию/модуль utils или helpers, не думая о будущем этой части программы.

С ростом проекта, количество функций в этой директории растет. Также растет и количество разработчиков в проекте. Функций появляется все больше и больше. Зачастую никто не следит за структурой этих модулей и вполне возможно появление дублирования кода.

Как это решить?
Забудьте о директориях utils и helpers. Эти названия никак не доносят суть содержимого. А из правил чистого кода мы помним, название должно быть однозначным и отражать назначение.
Следует задуматься, почему вообще появилась необходимость в вынесении функции?
Почему они используются…
источник

🦉⁣

🦉 ⁣ in ☄️ effector
The Fallen Phoenix
Ну тут этот аргумент не так подходит, потому что каждый из этих файлов содержит по три строки. Роль функций видна по названию и утилитарна.
Почитай чистую архитектуру
источник

T

The Fallen Phoenix in ☄️ effector
Ну я же вынести предлагаю нечто что неспецифично для конкретного проекта, а скорее общеязыковые примитивы.
источник

T

The Fallen Phoenix in ☄️ effector
А тут про "повторяющиеся части" (логики проекта?)
источник

T

The Fallen Phoenix in ☄️ effector
С этим я абсолютно согласен
источник

🦉⁣

🦉 ⁣ in ☄️ effector
The Fallen Phoenix
Ну я же вынести предлагаю нечто что неспецифично для конкретного проекта, а скорее общеязыковые примитивы.
смешать bind и assertObject в кучу без четкой области ответственности?
источник

🦉⁣

🦉 ⁣ in ☄️ effector
и тогда появится больше одной причины для изменения модуля
источник

yv

yumaa verdin in ☄️ effector
bind и bind2 вообще выпилить надо имхо, заменив на нормальные кложуры
источник

T

The Fallen Phoenix in ☄️ effector
🦉 ⁣
смешать bind и assertObject в кучу без четкой области ответственности?
Ну это вообще не модули так то
источник

🦉⁣

🦉 ⁣ in ☄️ effector
The Fallen Phoenix
Ну это вообще не модули так то
так-то модули где лежат эти функции
источник

🦉⁣

🦉 ⁣ in ☄️ effector
esmodules
источник

🦉⁣

🦉 ⁣ in ☄️ effector
но на уровне исходного кода, а не архитектуры. Но SRP это не отменяет
источник

T

The Fallen Phoenix in ☄️ effector
🦉 ⁣
esmodules
Во! Отличное название для файла. :) А если честно, то это уже вопрос привычек и договоренностей
источник

🦉⁣

🦉 ⁣ in ☄️ effector
The Fallen Phoenix
Во! Отличное название для файла. :) А если честно, то это уже вопрос привычек и договоренностей
я предпочитаю разделять функции по области ответственности
источник

🦉⁣

🦉 ⁣ in ☄️ effector
а не сваливать в кучу, мол это "утилиты"
источник

T

The Fallen Phoenix in ☄️ effector
Я просто предложил )
источник

T

The Fallen Phoenix in ☄️ effector
Использование стрелочных функций это в ту же степь?
источник

T

The Fallen Phoenix in ☄️ effector
Мол this зло?
источник

T

The Fallen Phoenix in ☄️ effector
Просто хочу уточнить сразу про что лучше не говорить:)
источник

yv

yumaa verdin in ☄️ effector
The Fallen Phoenix
Мол this зло?
this зло, но стрелочные функции просто для удобства записи, я так думаю.
а this принципиально не используется.
источник