Проблема: один файл — один хаос
Когда в проекте появляется хотя бы два-три класса, файл с кодом раздувается до сотен строк. В нём становится трудно ориентироваться, искать ошибки и вносить изменения.
Решение очевидно: разбить код на несколько файлов. Каждый класс — в свой файл.
Пример: класс Rectangle
Создадим файл rect.idyl с классом Rect (прямоугольник):
Класс Rect хранит ширину и высоту, умеет вычислять площадь и масштабироваться по каждой оси.
Главный файл: main.idyl
А теперь посмотрим, как выглядит main.idyl — главный файл программы, который использует этот класс:
Обратите внимание, как читается 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.
Эти правила помогут вам (и тем, кто будет читать ваш код) не утонуть в деталях и быстро находить нужные места.