Что вы считаете лучшими практическими инструментами рабочего процесса для разработки веб-приложений (PHP)? [закрыто]

18

Я действительно надеюсь, что кто-то с большим опытом сможет отредактировать вопрос в соответствии с моими примерами ответов:

  • используя контроль версий
  • разработка через тестирование
  • код отладки (xdebug для php)
  • использование диаграмм UML
  • использование ООП для поддерживаемого, многократно используемого кода
  • использование фреймворков (таких как Zend Framework для php) для быстрой разработки приложений

Что-нибудь еще или разработка того, что я упомянул выше?

По сути, я нахожусь в процессе формирования команды разработчиков (я сам разработчик), и мне хотелось бы получить несколько советов о том, как профессиональные программисты / дизайнеры и т. Д. Должны работать вместе и какие стандарты / парадигмы они должны использовать.

Кроме того, если у кого-нибудь есть какие-либо книги или ссылки на эту тему, я бы это приветствовал!

Я нашел то, что, как мне кажется, удовлетворяет тому, что я ищу, или, по крайней мере, его часть:

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

Дэмиен Рош
источник

Ответы:

9

используя контроль версий

SVN очень распространен, но Mercurial более красивый, мощный и имеет солидную поддержку графического интерфейса.

разработка через тестирование

хорошо, если вы проводите модульное тестирование, вы уже на стороне победителя. для инструментов это вопрос выбора. тестирование должно быть максимально простым, вот почему я отказался от PHPUnit для SimpleTest.

код отладки

с юнит-тестами вам вряд ли понадобится xdebug. Я обычно использую xdebug только для профилирования. (проверьте KCachegrind кстати)

использование диаграмм UML

самая большая проблема со всем, что отражает логику кода, состоит в том, что очень много ручной работы нужно поддерживать в синхронизации. Вы можете автоматизировать некоторые задачи, но это не так полезно, потому что вы обычно хотите использовать UML, прежде чем что-то есть. Другая проблема заключается в том, что инструменты для диаграмм гораздо сложнее использовать, чем ручку, бумагу или доску. используйте uml, если вам нужно сообщить о проблеме нескольким разработчикам или если вам нужна абстракция для себя. («dia» - это хороший бесплатный инструмент. Также инструменты мозгового картирования очень удобны для мозгового штурма, некоторые могут даже конкурировать с ручкой и бумагой.)

использование ООП для поддерживаемого, многократно используемого кода

что ж, до некоторой степени получается. :) один хороший совет: состав> наследство. Наследование является мощным инструментом для повторного использования с первого взгляда, но обслуживание и слабая связь пострадают за это. Второй хороший совет: обслуживание> повторное использование. абстрактная система может быть очень мощной, но в то же время сложной в обслуживании.

использование фреймворков (таких как Zend Framework для php) для быстрой разработки приложений

RAD это хорошая вещь, чтобы вывести ваше приложение на ранней стадии. но некоторые компоненты - особенно ORM - будут стрелять в ваши ноги, по крайней мере, если речь идет о масштабируемости. главная проблема здесь заключается в том, что вы привязываете свою доменную логику к работе с объектами, что становится очень трудно выделить, если вам нужно чисто масштабируемое решение, оптимизированное для базы данных. помните об этом и поощряйте своих разработчиков использовать базу данных без высокоуровневых уровней абстракции. абстракция базы данных - это миф, а orm - ложь.

ПОЦЕЛУЙ

новички обычно хотят применять все эти лучшие практики, устанавливать стандарты кодирования, использовать все хорошие цепочки инструментов, что угодно. у некоторых разработчиков это срабатывает, но у некоторых может возникнуть ментальная блокада, если дела будут слишком строгими. модульное тестирование и scm действительно необходимы, но кто-то новичок в модульном тестировании действительно должен изучить его ценность, прежде чем он его полюбит. не переусердствуйте, применяйте практики шаг за шагом и посмотрите, как это работает. KISS также сводится к коду. Иногда лучший способ решить сложную проблему - это решить ее неправильно. вам нужен алгоритм с шестью степенями разделения ? просто выберите несколько друзей наугад. Вы можете создать полное приложение вокруг него, с неверной логикой. если клиент в конце концов решит отказаться от него, все сэкономят много денег.

проворный

узнать о гибких методологиях, экстремальном программировании, схватках и т. д. Есть много книг. любая книга сделает вашу команду лучше, но лучше всего в нее вложить каждого члена команды.

Алан Блэр
источник
1
Фантастический ответ! Благодарю. +150 повторений для вас, сэр! Не стесняйтесь добавлять что-либо еще в пост, как будет показано в верхней части страницы под вопросом. Такие вещи, как @TODO в программном обеспечении для кода, комментирования и документирования и т. Д.
Дэмиен Рош
2
  • Контроль версий: 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 с некоторыми функциями уже работает.

Нажмите Upvote
источник
1
Прочитав этот пост и увидев, что я уже использую несколько рекомендованных элементов, я решил попробовать среду IDE Netbeans. Кто-нибудь может порекомендовать какие-либо плагины, которые стоит использовать с ним для разработки PHP / Codeigniter? Кроме того, это может хорошо работать с Wampserver?
Гортрон
1
@Gortron Я использую netbeans с codeigniter. Существует инструмент автозаполнения для codeigniter / netbeans: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP действительно является сердцем unix, и разработка на виртуальной машине linux - хорошая идея. Также избегайте подрывной деятельности, в 2010 году используется что-то распределенное (git, hg, bzr). hginit.com
Кейо
Framework: CodeIgniter. Hands on the best web development platform for PHP.Это, откровенно говоря, фигня. Если вы когда-либо использовали symfony, rails или django, вы увидите некоторые серьезные проблемы. Здесь нет модульной структуры каталогов, нет интерфейса командной строки. Тогда у вас есть основные компоненты, такие как формы и модели, занимающие много кода. Если вы вообще знаете какие-либо программные паттерны, вы увидите, что codeigniter отстой. По крайней мере, используйте Kohana, который CI разветвлял и сделал правильно после смерти сообщества.
Кейо
Если вы работаете в Windows, я бы порекомендовал SQLyog (у них есть версия для сообщества ) вместо phpMyAdmin. Я никогда не находил достойной замены SQLyog в Linux, и это позор ...
Дин Хардинг
1
@keyo, спасибо за ссылку. Я добавил инструмент автозаполнения в Netbeans, очень удобный для проекта с большим количеством функций в моделях. Не думаю, что я пока что перейду с SVN, я всего лишь армия из 1, в данный момент я не нуждаюсь в распределенных системах.
Гортрон
2

Я согласен в основном с публикацией Click Upvote, однако, если вы работаете на относительно большом сайте, я определенно рекомендую использовать платформу Symfony в сочетании с Doctrine ORM.

Если ваш проект должен состояться в следующем году, я бы сказал, найдите время, чтобы инвестировать в Symfony2 и Doctrine2.

Кроме того, я не могу не подчеркнуть важность разработки на Unix-системах, Ubuntu - это мои предпочтения и отличный веб-сервер. Я работаю в основном на Windows, но работаю на Ubuntu, работающем в виртуальной машине VMWare на моем рабочем столе (или на сервере, когда я на работе).

Что касается IDE, я настоятельно рекомендую использовать NuSphere PHPEd или Storm PHP, к сожалению, как и все замечательные вещи, они не бесплатны.

xzyfer
источник
+1 за ОРМ. Я потратил бесчисленные часы на написание шаблонных запросов на codeigniter.
Кейо
PHP намного лучше в системе на основе Linux. Особенно, если вы когда-нибудь захотите использовать плагин на основе C (на ум приходят libmemcached или ImageMagick)
Дин Хардинг,
некоторые замечательные вещи бесплатны, а как насчет Linux?
dan_waterworth
0

Использовать диаграмму UML приятно, но совершенно необязательно. Любые диаграммы будут делать до тех пор, пока ваша команда поймет, что они имеют в виду. Попытка использовать стандарт, который никто не знает хорошо, может привести к проблемам и потерянному времени.

Я бы порекомендовал начать каждую страницу с макета ( http://balsamiq.com ) или попросить вашего дизайнера нарисовать его для вас. Не ждите, что разработчики будут хороши в визуальной эстетике и будут создавать хорошие страницы из ниоткуда.

Попросите кого-нибудь, назначенного выполнять обязанности по проверке кода, если у вас несколько старших членов команды - заставьте их делать проверки по очереди ( Совет по проверке )

Илья Кочетов
источник
0

При совместной работе вам необходимо:

• использование контроля версий: я думаю, что Git или Subversion будут работать довольно гладко

• разработка на основе тестирования: я начинаю понимать, что это необходимо, но не доводите это до крайности

• код отладки (xdebug для php): xdebug - мой выбор

• использование диаграмм UML: это помогает, когда каждый имеет практические знания в области ОО-программирования и DesignPatterns, тем не менее, это всегда хорошая практика

• использование ООП для поддерживаемого, многократно используемого кода: И ГИБКОСТЬ, я думаю, что это ключевой аспект ООП.

• использование фреймворков (таких как Zend Framework для php) для быстрой разработки приложений: My Advise - это SYMFONY, первый php-фреймворк (не инструментарий). Он имеет очень большое сообщество, много документации и полностью реализован на php. Я работаю с ним в течение года, и он полностью связан с ООП

• вам также может понадобиться система для отслеживания ошибок, запросов функций и т. Д., Например: Mantis или Track . Эти системы довольно просты и понятны. Они также позволяют вам связывать вашу подрывную деятельность и связывать ваши коммиты с определенными функциями или ошибками, которые публикуют люди.

Наконец, всегда важно, если вы собираетесь руководить командой разработчиков, чтобы периодически проводить небольшие собрания, чтобы каждый знал состояние системы в определенный момент и, возможно, таким образом, вы сможете планировать или увидеть, как все работает.

В моей компании мне приходится каждый день отправлять электронные письма, в которых рассказывается, над чем я работаю и есть ли какие-либо сложности.

Удачи!

guiman
источник
0
  • Каркас : кодовый, без сомнения. Он обладает всеми функциями, которые могут вам понадобиться, и не заставляет вас использовать какие-либо из них, если они вам не нужны;
  • Контроль версий, IDE : я довольно старая школа, и я не думаю, что мой ответ мог бы действительно помочь вам;
  • Wireframing, UML : в этом тоже старая школа, но на самом деле: доски выигрывают. Они гибкие, расширяемые и поддерживают любые соглашения, которые вы считаете подходящими;
  • Администрирование базы данных : phpmyadmin;
  • Разработка сервера ОС : Я могу быть банальным, но: Ubuntu. Установите сервер LAMP за считанные секунды; не паникуйте по поводу добавления новых библиотек (страшное воображение: одна команда, готово); если вам нравится PHP, вы, вероятно, в конечном итоге начнете работать на Linux-сервере, поэтому лучше начать практиковать. (Отказ от ответственности: Ubuntu не мой любимый дистрибутив).
  • Разное : grep может быть невероятно полезен при отладке кода других людей (хотите знать, сколько контроллеров используют данную модель? Готово!).

редактировать

Я забыл самое главное: спецификации. Напишите реальные спецификации для вашего проекта, прежде чем касаться какого-либо кода. Помните все диаграммы взаимодействия с пользователем. Это спасет вас веками.

cbrandolino
источник
0

Контроль версий Поскольку вы работаете в команде, в ваших же интересах, чтобы вы работали с чем-то распределенным. Ваши кандидаты - 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

Keyo
источник
0

Я бы порекомендовал посмотреть на Bazaar для контроля версий. По сравнению с Git у него есть главное преимущество: его легко использовать и устанавливать в Windows, Mac OS и Linux. Кроме того, команды bzr очень похожи на команды svn, поэтому тот, кто раньше работал с Subversion, может легко использовать Bazaar без особых усилий для обучения. Я смотрю на тебя Git.

Кроме того, я твердо верю в то, чтобы ничего не навязывать вашим разработчикам. То, что сказано, позволяет им использовать IDE, операционную систему и так далее, что они предпочитают.

Кроме того, я настоятельно рекомендую вам выполнять тесты wirte для всего вашего кода, независимо от того, насколько это утомительно.

Решение за или против фреймворка imho не то, что вы можете сделать, основываясь на рекомендациях, сделанных здесь. Я предлагаю вам перечислить те из них, которые выглядят многообещающе для вас, исходя из их возможностей, а затем написать небольшое тестовое приложение для каждого из них. (Пишите одно и то же каждый раз.)

Тихоокеанское стандартное время
источник