используя контроль версий
SVN очень распространен, но Mercurial более красивый, мощный и имеет солидную поддержку графического интерфейса.
разработка через тестирование
хорошо, если вы проводите модульное тестирование, вы уже на стороне победителя. для инструментов это вопрос выбора. тестирование должно быть максимально простым, вот почему я отказался от PHPUnit для SimpleTest.
код отладки
с юнит-тестами вам вряд ли понадобится xdebug. Я обычно использую xdebug только для профилирования. (проверьте KCachegrind кстати)
использование диаграмм UML
самая большая проблема со всем, что отражает логику кода, состоит в том, что очень много ручной работы нужно поддерживать в синхронизации. Вы можете автоматизировать некоторые задачи, но это не так полезно, потому что вы обычно хотите использовать UML, прежде чем что-то есть. Другая проблема заключается в том, что инструменты для диаграмм гораздо сложнее использовать, чем ручку, бумагу или доску. используйте uml, если вам нужно сообщить о проблеме нескольким разработчикам или если вам нужна абстракция для себя. («dia» - это хороший бесплатный инструмент. Также инструменты мозгового картирования очень удобны для мозгового штурма, некоторые могут даже конкурировать с ручкой и бумагой.)
использование ООП для поддерживаемого, многократно используемого кода
что ж, до некоторой степени получается. :) один хороший совет: состав> наследство. Наследование является мощным инструментом для повторного использования с первого взгляда, но обслуживание и слабая связь пострадают за это. Второй хороший совет: обслуживание> повторное использование. абстрактная система может быть очень мощной, но в то же время сложной в обслуживании.
использование фреймворков (таких как Zend Framework для php) для быстрой разработки приложений
RAD это хорошая вещь, чтобы вывести ваше приложение на ранней стадии. но некоторые компоненты - особенно ORM - будут стрелять в ваши ноги, по крайней мере, если речь идет о масштабируемости. главная проблема здесь заключается в том, что вы привязываете свою доменную логику к работе с объектами, что становится очень трудно выделить, если вам нужно чисто масштабируемое решение, оптимизированное для базы данных. помните об этом и поощряйте своих разработчиков использовать базу данных без высокоуровневых уровней абстракции. абстракция базы данных - это миф, а orm - ложь.
ПОЦЕЛУЙ
новички обычно хотят применять все эти лучшие практики, устанавливать стандарты кодирования, использовать все хорошие цепочки инструментов, что угодно. у некоторых разработчиков это срабатывает, но у некоторых может возникнуть ментальная блокада, если дела будут слишком строгими. модульное тестирование и scm действительно необходимы, но кто-то новичок в модульном тестировании действительно должен изучить его ценность, прежде чем он его полюбит. не переусердствуйте, применяйте практики шаг за шагом и посмотрите, как это работает. KISS также сводится к коду. Иногда лучший способ решить сложную проблему - это решить ее неправильно. вам нужен алгоритм с шестью степенями разделения ? просто выберите несколько друзей наугад. Вы можете создать полное приложение вокруг него, с неверной логикой. если клиент в конце концов решит отказаться от него, все сэкономят много денег.
проворный
узнать о гибких методологиях, экстремальном программировании, схватках и т. д. Есть много книг. любая книга сделает вашу команду лучше, но лучше всего в нее вложить каждого члена команды.
Контроль версий: TortoiseSVN в Windows - лучший, наиболее интуитивно понятный и простой в использовании.
Фреймворк: CodeIgniter . Руки на лучшую платформу веб-разработки для PHP.
IDE: Netbeans - это лучшая IDE для PHP, которую я использовал в Windows.
Модульное тестирование: Есть несколько вариантов, поиск Google будет много. CodeIgniter также имеет свой собственный тестер модулей.
Отладчик: Xdebug.
Библиотека Javascript: Jquery
Программа FTP: FileZilla
Администрирование базы данных: PhpMyAdmin
Создание каркаса : макет Balsimus, или используйте доску.
Разное: Используйте WAMP, если в Windows легко установить, запустить, остановить и перезапустить apache, mysql и php в одном пакете.
Кроме того, если вы собираетесь работать над многими различными веб-сайтами, и большинство из этих веб-сайтов будут иметь некоторые общие функции, такие как регистрация, вход в систему / выход из системы, раздел администратора для поиска пользователей и т. Д., Я рекомендую создать небольшой проект в любой среде вы выбираете и используете этот проект в качестве основы для каждого нового проекта, который вы запускаете. Обычно я называю этот проект «скелет». Если я собираюсь начать работать на xyz.com, я скопирую каталог скелетов и переименую его в «xyz.com», заполню некоторые файлы конфигурации, и у меня будет копия xyz.com с некоторыми функциями уже работает.
источник
Framework: CodeIgniter. Hands on the best web development platform for PHP.
Это, откровенно говоря, фигня. Если вы когда-либо использовали symfony, rails или django, вы увидите некоторые серьезные проблемы. Здесь нет модульной структуры каталогов, нет интерфейса командной строки. Тогда у вас есть основные компоненты, такие как формы и модели, занимающие много кода. Если вы вообще знаете какие-либо программные паттерны, вы увидите, что codeigniter отстой. По крайней мере, используйте Kohana, который CI разветвлял и сделал правильно после смерти сообщества.Я согласен в основном с публикацией Click Upvote, однако, если вы работаете на относительно большом сайте, я определенно рекомендую использовать платформу Symfony в сочетании с Doctrine ORM.
Если ваш проект должен состояться в следующем году, я бы сказал, найдите время, чтобы инвестировать в Symfony2 и Doctrine2.
Кроме того, я не могу не подчеркнуть важность разработки на Unix-системах, Ubuntu - это мои предпочтения и отличный веб-сервер. Я работаю в основном на Windows, но работаю на Ubuntu, работающем в виртуальной машине VMWare на моем рабочем столе (или на сервере, когда я на работе).
Что касается IDE, я настоятельно рекомендую использовать NuSphere PHPEd или Storm PHP, к сожалению, как и все замечательные вещи, они не бесплатны.
источник
Использовать диаграмму UML приятно, но совершенно необязательно. Любые диаграммы будут делать до тех пор, пока ваша команда поймет, что они имеют в виду. Попытка использовать стандарт, который никто не знает хорошо, может привести к проблемам и потерянному времени.
Я бы порекомендовал начать каждую страницу с макета ( http://balsamiq.com ) или попросить вашего дизайнера нарисовать его для вас. Не ждите, что разработчики будут хороши в визуальной эстетике и будут создавать хорошие страницы из ниоткуда.
Попросите кого-нибудь, назначенного выполнять обязанности по проверке кода, если у вас несколько старших членов команды - заставьте их делать проверки по очереди ( Совет по проверке )
источник
При совместной работе вам необходимо:
• использование контроля версий: я думаю, что Git или Subversion будут работать довольно гладко
• разработка на основе тестирования: я начинаю понимать, что это необходимо, но не доводите это до крайности
• код отладки (xdebug для php): xdebug - мой выбор
• использование диаграмм UML: это помогает, когда каждый имеет практические знания в области ОО-программирования и DesignPatterns, тем не менее, это всегда хорошая практика
• использование ООП для поддерживаемого, многократно используемого кода: И ГИБКОСТЬ, я думаю, что это ключевой аспект ООП.
• использование фреймворков (таких как Zend Framework для php) для быстрой разработки приложений: My Advise - это SYMFONY, первый php-фреймворк (не инструментарий). Он имеет очень большое сообщество, много документации и полностью реализован на php. Я работаю с ним в течение года, и он полностью связан с ООП
• вам также может понадобиться система для отслеживания ошибок, запросов функций и т. Д., Например: Mantis или Track . Эти системы довольно просты и понятны. Они также позволяют вам связывать вашу подрывную деятельность и связывать ваши коммиты с определенными функциями или ошибками, которые публикуют люди.
Наконец, всегда важно, если вы собираетесь руководить командой разработчиков, чтобы периодически проводить небольшие собрания, чтобы каждый знал состояние системы в определенный момент и, возможно, таким образом, вы сможете планировать или увидеть, как все работает.
В моей компании мне приходится каждый день отправлять электронные письма, в которых рассказывается, над чем я работаю и есть ли какие-либо сложности.
Удачи!
источник
редактировать
Я забыл самое главное: спецификации. Напишите реальные спецификации для вашего проекта, прежде чем касаться какого-либо кода. Помните все диаграммы взаимодействия с пользователем. Это спасет вас веками.
источник
Контроль версий Поскольку вы работаете в команде, в ваших же интересах, чтобы вы работали с чем-то распределенным. Ваши кандидаты - Git и Mercurial. Это означает, что ваша команда может выполнять коммиты локально, не нарушая проект, но все же отслеживать свою работу, а затем передавать эти коммиты на центральный сервер. Это также намного быстрее и имеет меньше конфликтов слияния, так как код отслеживается как наборы изменений, а не как ревизии. Прочтите руководство по hginit (написанное соучредителем переполнения стека не меньше), и вы немного больше поймете, что такое DVCS. http://hginit.com/
Вы также должны использовать репозиторий для развертывания вместо rsync или ftp.
Разработка через тестирование В зависимости от того, что вы делаете, тестирование может тратить много времени. Я не говорю, что вы должны полностью пропустить это, для небольших проектов это накладные расходы. Если вы пишете библиотеку или большой долгосрочный проект, обязательно напишите для него тесты. Тесты помогут на этапе технического обслуживания. Имейте в виду, что TDD не может найти все ваши ошибки. Будут проблемы с пользовательским интерфейсом, проблемы с компоновкой, проблемы с производительностью и так далее.
Отладка Xdebug в основном ваш единственный выбор здесь. Хорошо интегрируется с Netbeans. Если вы чувствуете необходимость когда-либо печатать переменные, вы должны использовать файл журнала. Используйте функцию logs frameworks, это намного безопаснее в производстве.
Планирование / Диаграммы Если вы используете хороший фреймворк, вам не нужно создавать слишком подробные диаграммы. Сохраняйте это простым и работайте в более коротких циклах выпуска, его легко перепланировать. Требования и спецификации проекта обязательно изменятся, поэтому я бы не стал тратить на них все свое время. Помните, что спецификация кода на самом детальном уровне.
Используйте инструмент отслеживания ошибок (см. Ниже), чтобы разбить спецификацию на задачи, которые вы можете назначить членам команды. Используйте центральный инструмент для документирования проектов, у трекера ошибок, вероятно, будет вики.
Вы можете использовать такой инструмент, как Mysql Workbench, чтобы создавать схемы баз данных в диаграммах и экспортировать их в виде SQL.
Каркасы и ООП Это, наверное, самая важная часть. Найдите себе популярный фреймворк, который будет поддерживать быструю разработку и повторное использование кода. Некоторым людям не понравится, когда я это говорю, но рамки должны определять, как вы работаете. Он должен обеспечивать структуру, чтобы один разработчик мог переключать проект и точно знать, где находится контроллер для определенной страницы, какие именно переменные шаблона и как запрашивать модель. Некоторые фреймворки допускают слишком большую гибкость, и вы обнаружите, что разработчики не всегда используют фреймворк одинаково. Мне нравится философия питона; должен быть один очевидный способ сделать все. Вот почему мне нравятся django и rails, они довольно самоуверенные, и это означает, что я могу посмотреть на чей-то код и понять, что он делает. Symfony выглядит как лучший вариант здесь,
Существует много вопросов о том, «что такое фреймворк» о переполнении стека, например: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why
Отслеживание ошибок Получите хорошую команду для отслеживания ошибок, разработанную для разработчиков. Не используйте что-то сверх упрощенное, как базовый лагерь. Redmine и Unfuddle - это два примера отличных баг-трекеров, которые также могут отслеживать время и интегрироваться в ваши репозитории. Ваша команда должна использовать этот инструмент для общения по вопросам, а не по электронной почте или IM. Это облегчает задачу для нового разработчика, когда существует история ошибок и документов. Эта статья объясняет, что именно должен делать любой хороший баг-трекер и почему. http://www.joelonsoftware.com/articles/fog0000000029.html
источник
Я бы порекомендовал посмотреть на Bazaar для контроля версий. По сравнению с Git у него есть главное преимущество: его легко использовать и устанавливать в Windows, Mac OS и Linux. Кроме того, команды bzr очень похожи на команды svn, поэтому тот, кто раньше работал с Subversion, может легко использовать Bazaar без особых усилий для обучения. Я смотрю на тебя Git.
Кроме того, я твердо верю в то, чтобы ничего не навязывать вашим разработчикам. То, что сказано, позволяет им использовать IDE, операционную систему и так далее, что они предпочитают.
Кроме того, я настоятельно рекомендую вам выполнять тесты wirte для всего вашего кода, независимо от того, насколько это утомительно.
Решение за или против фреймворка imho не то, что вы можете сделать, основываясь на рекомендациях, сделанных здесь. Я предлагаю вам перечислить те из них, которые выглядят многообещающе для вас, исходя из их возможностей, а затем написать небольшое тестовое приложение для каждого из них. (Пишите одно и то же каждый раз.)
источник