Статья подготовлена для студентов курса образовательной программы OTUS «Разработчик игр на C#»
Крупные проекты не появляются на пустом месте. Написать в самом деле большую и сложную программу сразу не получится. Однако выход есть!
Разделяй и повторяй
Лучше всего это правило продемонстрировать на примере. Представим, вы хотите написать программу для решения головоломки Судоку. Чтобы навёл камерой на журнал Судоку и сразу увидел ответ. Круто? Было бы классно. Как написать такую программу?
Сначала нужно разделить её на множество подзадач как технических, так и алгоритмических:
- как получить фото с камеры?
- как его сделать чёрно-белым?
- как выделить область с Судоку?
- как распознать цифры?
- как решить головоломку?
- как показать результат?
- как запустить это всё на телефоне?
Далее необходимо в «лабораторных» условиях разобраться с каждым пунктом. Это значит – найти способ решения каждой подзадачи, хорошенько «погуглить», сделать тестовый проектик и реализовать указанный функционал по принципу «лишь бы заработало»: только для того, чтобы поставить галочку, что ты понял, как это делается и что у тебя есть рабочий пример.
Следующий этап
Когда все части реализованы, начинается самое интересное — создание полной программы. Не нужно ставить перед собой задачу сделать суперправильное архитектурное решение. Просто пиши, чтобы работало:
- вызывай модуль фотографирования, делай фотку чёрно-белой;
- находи область задачки, запускай распознавание;
- вычисляй решение и показывай его на экране.
На данном этапе не стоит отвлекаться на оптимизацию, проверку данных, универсальность. Твоя задача – сделать так, чтобы программа могла отработать от начала до конца под твоим контролем.
Что дальше?
Когда всё это получится, тогда можно сделать «Reset» и начать создавать программу «с нуля», имея в запасе функционал для решения каждой подзадачи и опыт их совмещения.
Опять же, не стоит слишком заморачиваться на универсальности и на оптимизации. Впрочем, вы и сами почувствуете, как лучше начать писать эту программу с определённой долей объектно-ориентированности и удобства использования.
Когда и это будет завершено, вы наконец-таки поймёте, как программа на самом деле должна работать. И вот теперь можно и в самом деле начать её создавать. Да, снова «с нуля», используя все былые наработки.
Крупные проекты не создаются на пустом месте
Необходимо сделать несколько итераций: от эскиза до прототипа и рабочего продукта. На каждой итерации продукт будет получаться более качественным и эффективным. Может, не всегда новая версия будет лучше прежней. Но при желании можно вернуться и к прошлой версии, ведь так?
Зачем начинать сначала?
Чтобы избежать «монстров» и «колоссов», которые могут обрушиться, когда ещё неясно, как программа работает. Программисты любят создавать своё, а не разбираться в старом. И это прекрасно, если только позволяет бюджет. Разделяйте и повторяйте, и будет тебе счастье!
А как вы создаёте сложные программы? Пишите в комментариях!
Материал подготовлен для студентов курса «Разработчик игр на C#» в образовательном проекте OTUS. Чтобы присоединиться к ближайшей группе, обязательно пройдите вступительное тестирование:
ПРОЙТИ ТЕСТИРОВАНИЕ