Я и мой друг начали работать вместе как партнеры, мы решили сделать сайт Kick-as * после веб-сайта. У нас есть идеи, записанные как 100 из них (да, мы сначала выбираем лучших и легких среди них).
Мой друг делает дизайн макета и организует вещи, а моя часть – это кодирование и управление сервером.
Небольшой проблемой, с которой я столкнулся, является отсутствие опыта в планировании проекта. Что я делаю, я просто начинаю код сразу и вместе с кодом я делаю DB, например, когда мне нужна таблица, которую я делаю.
Я знаю, что это очень плохой подход для проекта среднего размера.
Здесь, в stackoverflow, я видел много опытных кодеров. Вам нужно многому научиться у вас, парни :).
Можете ли вы помочь мне в том, как планировать проект и какой стандарт / структуру / рамки кодирования использовать (я делаю PHP-код).
Заранее спасибо.
Начните с определения области. Напишите абзац на страницу и попробуйте описать свой сайт. Подход «сверху вниз» должен состоять в том, чтобы начать думать о функциональности, которую вы хотели бы реализовать и уточнить, добавив больше деталей.
Подход сверху вниз (также известный как поэтапный дизайн) – это, по сути, разрушение системы, чтобы получить представление о ее композиционных подсистемах. В подходе сверху вниз сначала разрабатывается обзор системы, определяющий, но не детализирующий подсистемы первого уровня. Затем каждая подсистема уточняется еще более подробно, иногда на многих дополнительных уровнях подсистем, пока вся спецификация не будет сведена к базовым элементам. Модель сверху вниз часто указывается при помощи «черных ящиков», что упрощает манипулирование ими. Однако черные ящики могут не прояснить элементарные механизмы или быть достаточно подробными, чтобы реально обосновать модель. http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design .
Однако есть много других подходов.
http://en.wikipedia.org/wiki/Software_project_management#Software_development_process
Опять же, самый важный шаг – уметь формулировать вашу идею словами; прежде чем вы сможете это сделать, я даже не стал бы начинать писать одну строку кода .
Что касается стандарта кодирования / структуры / структуры, я рекомендую стандарт кодирования рамки zend , структуру MVC и Zend Framework .
Краткое руководство по архитектуре MVC . Идея заключается в том, чтобы помочь вам запомнить идеи (в то время как ваш мозг – паровой код) и иметь документы для будущих программистов.
Создайте базу данных. Сделайте диаграмму ER. Поместите его в документ.
Кратко опишите причины дизайна для важных вопросов (почему вы выбираете полиморфное отношение, зачем использовать это представление, что выбирает вы ожидаете, что это более трюки и т. Д.). Это изменится по мере ввода кода (и вы ничего не сможете сделать). Документируйте изменения. Чтобы справиться с изменениями, используйте систему управления версиями для базы данных, например, миграции рельсов .
Создайте структуру своего сайта (разделы, страницы, ссылки, потоки страниц и т. Д.). Документируйте это. (например: «разделы сайта 2, этот раздел сделан …» и т. д.)
На основе этого сделайте документ, описывающий ваши контроллеры и представления. («контроллер для статей, просмотр списка и просмотр статьи, также редактирование и создание представлений, но только для администраторов» и т. д.).
Опишите, как вы собираетесь применять аутентификацию и авторизацию (на уровне контроллера и уровня просмотра). Кому разрешено, где.
Опишите, как вы защищаете основные веб-атаки (xss, csrf), где это необходимо. (например: «Я избегаю всех переменных вида, используя htmlentities для защиты xss и …»)
Создавайте свои модели и боковые функции (отправляя электронные письма, фоновые задания и т. Д.). Они будут основной частью кода. Документируйте каждый и опишите основные проблемы (например, как следует обрабатывать время, как эта определенная модель должна подключаться к валютной службе, как эта модель должна анализировать и манипулировать некоторым кронным файлом, какой алгоритм вы должны использовать для определения 5-го числа статьи, в зависимости от вашего приложения.) Опишите, какие библиотеки вы используете, как и для каких целей (например: «мы должны использовать завиток для удаления SO и сделать rss-канал»)
Опишите, как вы защищаете основные веб-атаки, где это необходимо (sql-injection, xss).
Как вы кодируете, все меняется. Ваши знания о дискретных произведениях вашей системы развиваются, и вы начинаете улучшать дизайн, основываясь на новом найденном просветлении. Документируйте свои изменения.
Несколько мыслей от кого-то, кто любит абстракции.
Выясните, какие у вас будут общие сайты. После того, как вы определили основные общие черты, найдите фреймворки или библиотеки, которые занимаются как можно большим количеством (помимо других критериев), например, код шаблона DB.
Для общих функций, которые вы не можете найти в готовом к использованию кодеке (они всегда существуют на настроенных веб-сайтах), у вас будет возможность написать общую библиотеку, которая будет использоваться на ваших сайтах самостоятельно. Это может быть шаблон для вашей разметки, библиотеки JavaScript или повторно используемого компонента на стороне сервера или все вместе.
Основываясь на вашем описании, это звучит так, будто вы наслаждаетесь большой свободой в творческом процессе (по сравнению с получением требований, предоставленных вам, и попросили его реализовать). Я бы сказал, не задумывайтесь над тем, что «просто начинаю кодировать сразу» – это очень весело и не все плохо. Опыт будет вашим лучшим другом, и к тому времени, как вы достигнете сайта № 100, у вас будет много всего. При создании второго веб-сайта ваш опыт с первым поможет вам избежать некоторых ошибок, которые вы сделали, и вы обнаружите новые сходства, которые вы не ожидали на этапе планирования. Просто убедитесь, что нашли время, переместите общий код в одну библиотеку и вернитесь назад и отредактируйте свой первый веб-сайт, чтобы использовать его. Сделайте это несколько раз, и вы извлечете уроки, которые стоят многого.