Причина организации

Это метод борьбы со сложностью, потому что наши умственные способности ограничены и могут просто обрабатывать конечное количество вещей одновременно. Размышляя о том, как разделить разные сущности, нам нужно создать модель, которая будет иметь смысл и поможет нам прийти к выводам о том, куда что-то нужно поместить, в идеале, подсознательно.
Мы, люди, любим шаблоны, потому что нам хорошо с ними, и именно поэтому их создание в нашей повседневной жизни может принести нам пользу.
В случае кода все начинается с папки с именем проекта, в которой, вероятно, есть еще одна папка с именем src.

Какие есть варианты?

Они не заложены в камень, иногда их можно даже смешать вместе, это зависит от того, насколько велик проект и предпочтения команды.

Абсолютно плоский

Самый простой способ, просто поместив все в одну и ту же папку. Может быть применимо только к небольшим проектам, для быстрого тестирования чего-либо или изучения новой функции, это очень скоро начнет выглядеть как шум, поэтому я бы рекомендовал всегда создавать какую-то структуру, есть поговорка: «практика совершенствует «- безусловно, относится к организации, не ленитесь.

По функции

Мы можем расположить все наши файлы в папках, к которым они относятся:

./scr/
    - payments/
        - popup/
        - api/
    - posts/
        - api/
    - easter-eggs/
    - forums/

Этот подход имеет много смысла, все находится на своем месте, рядом с тем, где он используется, так красиво и аккуратно.

По типу

Идея состоит в том, что каталог, в который нужно что-то поместить, зависит от того, что это:

./src
    - /api
        - /paymentApi
        - /postApi
    - /components
        - /textInput
        - /selector
    - /containers
        - /payments
        - /posts

Все кажется ясным, и все имеет свое место, не нужно думать о том, куда что-то должно идти.

Собираем все вместе

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

Давайте рассмотрим пример того, как организовать наши школьные учебные материалы. Я полагаю, вы согласитесь, что группировка по типу файла была бы катастрофой, потому что «архитектура обучения» разбивается на предметы, которые затем распадаются на отдельные темы.

Полный хаос:

/school
    - integers.docx
    - joan_of_arc.docx
    - tectonic_plates.docx
    - doing_taxes.docx
    - acting_101.docx

Хорошо

/school
    - /math
        - integers.docx
        - linear-functions.pdf
    - /history
        - fall_of_rome.epub
        - ww2.divx

Например, для внутреннего проекта NodeJS имеет смысл сгруппировать все по функциональности:

./src
    - /posts
        - /api
        - /dbService
        - /apiHelper
        - /dbMapping

В то время как для внешнего проекта группировка по типу имела бы гораздо больше смысла:

./src
    - /components
        - box
        - redRectangle
    - /container
        - login
        - home

Есть одна вещь, на которую стоит обратить внимание — глубокое вложение, оно только делает обход более громоздким, и если у вас есть больше мест для размещения чего-либо, решение становится труднее. Честно говоря, обычно это сводится к использованию сочетания всех трех упомянутых способов, но, безусловно, полезно помнить об архитектуре.

About the Author

Ergashev Lazizbek

Добрый день, дорогие мои читатели, позвольте мне рассказать вам немного о себе. Я Лазизбек Эргашев, я веб-разработчик из Узбекистана. В основном я использую laravel/php для бэкэнда и vuejs/javascript для фронтэнда. Основная цель моего блога - поделиться с вами своим опытом и знаниями.

View All Articles