Единственно верного подхода к написанию программ не существует. Мышление любого человека уникально, поэтому тот подход, который будет удобен одному программисту, может быть совершенно непригоден другому. Однако есть базовые принципы, с которыми нужно считаться всегда, иначе ничего не получится.
Знай, чего хочешь
Чтобы научить чему-то компьютер, нужно самому это уметь. Машина выполнит любую вашу прихоть, надо только правильно сказать ей об этом. Любая программа — это человеческая мысль, выраженная на языке программирования (ЯП). Следовательно, чтобы написать программу, необходимо иметь эту мысль и знать ЯП. Вы должны понимать, на что вообще способен компьютер, чтобы требовать от него что-то.
Мысли приходят хаотично, их нужно формулировать, накапливать и структурировать. После прохождения такого цикла появляются новые мысли, которыми мы расширяем уже имеющиеся. Так мы получаем более развернутое представление о том, что нам нужно. Но в голове всего не удержать, нужен внешний носитель, где будут фиксироваться все идеи.
Есть два основных способа зафиксировать идею: блок-схема и текст, написанный простыми словами. Вы это делаете для себя, выбирайте что-то одно, главное, чтобы вам было удобно это понимать. Представьте, что вы и есть программа, которая последовательно выполняет операторы. Подумайте, а потом запишите, что вам нужно для текущего и следующего шага. Не торопитесь приступать к кодированию, пока весь ваш алгоритм не примет полноценную форму. Это важно.
Разделяй и властвуй
Если посмотреть на исходный код более или менее полезной программы, то можно легко запутаться в нем, ведь не сразу ясно, что за что отвечает, какую роль играют те или иные методы и переменные. Но этот код составлял далеко не бог, а простой человек, и не исключено, что он не превосходит умственными способностями того, кто сейчас читает эти строки.
Начинающие программисты должны быть убеждены, что со сложной задачей можно бороться лишь путем разделения ее на более простые. Последние тоже следует разделять на еще более простые. Процесс продолжается до тех пор, пока одна большая проблема не превратится в упорядоченную структуру из маленьких. Это очень увлекательное занятие. Когда вы это сделаете, поймете, что все эти подзадачи настолько просты, что одна большая задача, которая раньше пугала вас, больше не имеет над вами власти.
Как примерно протекает работа. Вы знаете, что любая программа представляет собой набор данных. Все данные имеют разные типы, разные форматы хранения. Есть такие, которые должны храниться всегда, другие мы получаем оперативно, они нам нужны лишь для вычислений. Первые могут быть записаны в файл, базу данных или константы, вторые — то, что возвращают нам методы или функции после выполнения.
Главное, что вы должны понять, это с какими данными вам предстоит работать. При простом мысленном разделении будущего приложения на части уже становятся видны основные его компоненты: база, файлы, классы, методы, переменные и пр. Теперь данные в базе можно группировать по таблицам, в файлах поместить конфигурационные значения, а оперативные данные классифицировать согласно парадигме ООП.
Никто не говорит, что это идеальный порядок действий. Определите для себя свой. Есть важный момент при разделении. Минимальные части должны быть такими, чтобы их можно было использовать повторно, либо в текущем приложении, либо в других. Так проявляется ценность повторного использования кода, и это рано или поздно сделает из вас эффективного разработчика.
Не усложняй
Ошибкой почти всех начинающих программистов является убеждение, что хорошая программа должна быть сложной. Есть и такие, которым доставляет удовольствие, что их код мало кому понятен. Дескать, другие умом недотягивают. Бросьте это, это совсем не дело. Код должен быть максимально простым, насколько это возможно. Если вы начнете усложнять проект с самого начала, то что будет, когда он вырастет во что-то большее? Вы станете его рабом, так как не сможете им эффективно управлять.
Пусть ваша программа выполняет вашу задачу. Средства не должны быть громоздкими, если этого явно не требуется. Отбросьте в сторону все фреймворки, которые любезно улыбаясь готовы вам предложить быстрое, бесплатное и самое правильное решение. Если вы ясно не понимаете как устроен фреймворк, то не сможете эффективно его использовать. В этих условиях дальнейшая работа с ним может быть бессмысленной или рискованной, а также очень трудоемкой, ведь вам придется не просто решить задачу, а решить ее в рамках правил той или иной архитектуры.
Для выполнения задачи напишите простой код, чтобы он работал. Пусть он выглядит криво, но не пытайтесь писать сразу оптимизированный код. Это крах! Когда ваша программа уже будет работать, вот тогда и приступайте к оптимизации. Подумайте, что можно убрать или изменить. Главное, что в момент таких размышлений вы будете чувствовать себя спокойными, зная, что ваш код работает.
Вот пример. Необходимо получить из формы данные и передать их в базу. Что здесь главное? Получение и передача. Если вы этого раньше не делали, тогда напишите простейший код, который будет брать данные из переменных и записывать их в базу. Как только механизм заработает, тогда и начинайте совершенствовать ваш код, добавляя фильтры, проверяя дубликаты в базе и пр. Новый код вы будете встраивать в основной. Скелет как бы обрастает мясом. Код не пишут в том же порядке, в котором он обрабатывается машиной — сначала основа, потом детали.
Приведенные три правила помогут вам сохранить нервы и получить удовольствие от работы. Конечно, на практике все гораздо сложнее, и, чтобы придерживаться этих правил, нужен опыт, так как без него легко опустить руки при первых трудностях.