В этом файле я объясню зачем программистам нужна структура кода и что я имею ввиду когда говорю про структуру кода. Данные примеры вы можете добавлять в любые проекты от backend, frontend, data science, game development и даже создание физических объектов таких как самолеты(хотя у меня и нет опыта создания самолетов, но на простых примерах я докажу что структура нужна каждому проекту и программисту).

Структура кода это очень сложный и объемный материал, а поэтому у нас будет несколько публикаций. В данном файле вы поймете для чего она нужна, и как ее можно оценить в вашем проекте. Тут будут примеры с папками и файлами, но структура распространяется на все части проекта, а такой пример взят для простоты понимания.

Что такое структура?

Структура кода или проектов в моем понимании — это набор правил, которые вводятся в проект для упрощения создания или изменения любых его частей. По сути, структура помогает сделать проект более упорядоченным, что в будущем позволяет сэкономить время и усилия.

Зачем нужна структура?

Давайте представим следующую ситуацию: вы пришли в проект, где папки кода выглядят следующим образом:

Для вас, как для нового программиста, это может показаться запутанным. Если я спрошу вас: где находится функция get_user_by_id()? Ответ может быть: utils/users.py, users/queries.py или users/database.py. Однако вы не будете знать это наверняка, пока не откроете каждый файл или не воспользуетесь поиском.

Сложности возрастают, если спросить, где находится функция get_product_by_id(). Логично предположить, что она находится в products/db.py. Но тогда возникает вопрос: зачем в папке users нужен файл queries.py? Чем db.py отличается от users/database.py?

Если вы не согласны, тогда попробуйте ответить на данные вопросы, а после спросите своего друга и сверьте ответы, которые скорее всего будут разными:

  1. Куда класть файлы json?
  2. За что отвечает users/routes.py?
  3. Зачем нам utils/users.py и почему данный файл не в папке users/?

Теперь, представим что ваш начальник дал вам новую задачу на написание SQL запросов в базу данных, и вы положили ваши запросы в products/db.py, а после писали код на протяжении двух дней. После чего, к вам подошел начальник и сказал что запросы должны лежать в новом файле products/queries.py, а вам следует переписать задачу и переместить весь ваш код туда. В итоге, на задачу вам приходится тратить больше времени и денег компании, а все последующие программисты будут совершать похожую ошибку так как у них отсутствует понимание вашего кода. В момент, когда новый работник вступит в проект, у него будут все вопросы на которые вам уже отвечал ваш начальник. В таком случае новому работнику и начальнику придется тратить больше времени на задачи, так как программист будет неведом в коде, а начальнику придется объяснять и отвечать на похожие или идентичные вопросы.

Представим диалог нового программиста и начальника: