Объектно-ориентированное программирование
Уроки Открыть IDE
На главную
ООП • Урок 4

Разбиение проекта по файлам

Как не заблудиться в собственном коде

Проблема: один файл — один хаос

Когда в проекте появляется хотя бы два-три класса, файл с кодом раздувается до сотен строк. В нём становится трудно ориентироваться, искать ошибки и вносить изменения.

Решение очевидно: разбить код на несколько файлов. Каждый класс — в свой файл.

Пример: класс Rectangle

Создадим файл rect.idyl с классом Rect (прямоугольник):

Класс Rect хранит ширину и высоту, умеет вычислять площадь и масштабироваться по каждой оси.

Главный файл: main.idyl

А теперь посмотрим, как выглядит main.idyl — главный файл программы, который использует этот класс:

Площадь равна: 600 После масштабирования: 780

Обратите внимание, как читается main():

  • создать прямоугольник
  • задать ширину
  • задать высоту
  • вывести площадь
  • масштабировать по оси X в 1.3 раза
  • снова вывести площадь

Это одно из правил хорошего тона: основные файлы проекта должны читаться как инструкция — ясно, понятно, без лишних деталей.

Реальный проект: несколько классов

Представьте, что мы разрабатываем игру, в которой игрок управляет парком грузовиков для доставки грузов по разным городам. Проект наверняка будет состоять из нескольких файлов:

  • cargo.idyl — класс «Груз»
  • truck.idyl — класс «Грузовик»
  • city.idyl — класс «Город»
  • quest.idyl — класс «Задание»
  • ui.idyl — визуальный интерфейс
  • saveload.idyl — сохранение и загрузка
  • main.idyl — управление всем процессом (запуск игры, связывание частей)

Каждый файл отвечает за свою часть функциональности. Искать ошибки в таком проекте — одно удовольствие:

  • Попадаются задания «доставить из Тюмени в Тюмень»? Ищи ошибку в quest.idyl.
  • Грузовики спокойно едут с пустым топливным баком? Следует подправить truck.idyl.
  • Не работают настройки звука? Возможно, есть смысл посмотреть ui.idyl.
  • После сохранения что-то пропадает? Ошибка наверняка в saveload.idyl.

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

Правила хорошего тона

  • Один класс — один файл. Имя файла должно совпадать с именем класса (в нижнем регистре).
  • Имя файла — подсказка о содержимом. Глядя на truck.idyl, сразу понятно, что там про грузовики.
  • main.idyl должен быть коротким и читаемым. Вся сложная логика — в других файлах.
  • Подключайте файлы через use имя_файла_без_расширения. Например, use rect; подключает rect.idyl.

Эти правила помогут вам (и тем, кто будет читать ваш код) не утонуть в деталях и быстро находить нужные места.