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