Как стать автором
Обновить

Комментарии 7

Есть и другие альтернативы: не использовать синтаксис throw и вместо этого всегда возвращать пользовательские объекты ошибок.
Глупая идея потому что если вернуть этот fancy Failable, то в случае если этот Failable не обработать, то код продолжит выполнятся, а вот в случае Exception/Error выполнение прервется. В JS нет способов форсировать обязательную обработку этих ваших Rust-подобных Return, поэтому делать подобные вещи в реальных проектах это большое зло, ну а писать в блоги пожалуйста если хочется.
Хорошо:

import { UserService } from '@services/UserService';
Еще лучше если в линтере будет включено правило запрета относительных импортов, особенно которые идут вверх / где "..." в пути импорта.

Убедитесь, что вы используете следующие хорошие практики для операторов import:
«Убеждаться» не нужно, нужно это автоматизировать github.com/renke/import-sort.
Не игнорируйте ошибки, возникшие в промисах
Опять же нет упоминания о включении соответствующих правил линтера.
Еще лучше если в линтере будет включено правило запрета относительных импортов, особенно которые идут вверх / где "..." в пути импорта.

Я до сих пор не понимаю, почему людям мешают относительные пути. Любая приличная IDE их рефакторит автоматически, если вам нужно разложить код по-другому.

Код, написанный с применением относительных импортов, сохраняет свою связность при перемещении в другое место. При применении алиасов придётся таскать с собой и алиасы, а уж если точка прикрепления перенесенного кода изменится — алиасы еще и нужно будет переписать. Ручками.
Я один из тех кто не любит относительные импорты. Они увеличивают когнитивную нагрузку потому что не всегда сразу «быстрым взглядом» поймешь откуда именно идет импорт если вложенность приличная. Алиасы тоже не очень люблю, мне нравится испортировать относительно корня проекта (да импорты могут быть длинными в таком случае, но зато никакой магии и просчитывать эти .../… не нужно, все сразу понятно откуда берется.

Алиас обычно это не конкретный файл, а глоб. Он меняется в 1 месте, и автоматом все импорты из алиаснутой папки указывают в новое место. Опять же, современный IDE типа VSCode вполне умеют работать с ними. А вот с относительными путями при рефакторинге асе гораздо интереснее. Вы переместили папку с 10 файлами, и теперь вам надо все импорты переписать, вместо того чтобы обновить один алиас.
Но и алиасы к сожалению не панацея. Некоторые сборщики (например Parcel) не умеют в алиасы, во всяком случае, в стандартные из tsconfig. И это может доставить хлопот.

Вы переместили папку с 10 файлами, и теперь вам надо все импорты переписать, вместо того чтобы обновить один алиас.

«Современный IDE типа VSCode» с этим справляется автоматически уже очень давно. Так же, как и при переносе одного файла.

Обычно мешают не просто относительные, а идущие вверх — их сложно вычислять в уме. Плюс, идущие вверх часто означают нарушение SRP и(или) DI.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории