Що ви вважаєте інструментами найкращої практики для розробки веб-додатків (PHP)? [зачинено]


18

Я дуже сподіваюся, що хтось із більшим досвідом може змінити питання відповідно до моїх прикладів відповідей:

  • за допомогою контролю версій
  • тест-керований розвиток
  • код налагодження (xdebug для php)
  • використання діаграм UML
  • використання OOP для коду, який може бути використаний для багаторазового використання
  • використання фреймворків (як Zend Framework для php) для швидкого розвитку додатків

Що-небудь інше чи розробка того, що я згадав вище?

В основному я перебуваю в середині формування команди розробників (я сам розробник), і мені б хотілося порадити, як професійні програмісти / дизайнери тощо повинні працювати разом та які стандарти / парадигми вони повинні використовувати.

Крім того, якщо у кого-небудь є книги або посилання на цю тему, я б вітаю це!

Я знайшов це, що, напевно, задовольняє те, що я шукаю, або принаймні його частину:

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

Відповіді:


9

за допомогою контролю версій

SVN дуже поширений, але меркурій більш гарний, потужний і має міцну підтримку gui.

тест-керований розвиток

добре, якщо ви зробите тестові одиниці, ви вже на виграші. для інструментів - це питання вибору. тестування повинно бути якомога простішим, ось чому я відкинув PHPUnit для SimpleTest.

код налагодження

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

використання діаграм UML

Найбільша проблема у всьому, що відображає логіку коду, полягає в тому, що багато синхронної роботи потрібно синхронізувати. ви можете автоматизувати деякі завдання, але це не так корисно, тому що ви зазвичай хочете використовувати uml, перш ніж у вас є щось. інша проблема полягає в тому, що інструменти для діаграм набагато складніше використовувати, ніж ручка та папір або дошка. використовуйте uml, якщо вам доведеться повідомити про проблему з кількома розробниками або якщо вам потрібна абстракція для себе. ("dia" - це приємний безкоштовний інструмент. Також інструменти для малювання розуму дуже зручні для мозкового штурму; деякі насправді можуть конкурувати з ручкою та папером.)

використання OOP для коду, який може бути використаний для багаторазового використання

ну, oop працює в якійсь мірі. :) одна хороша порада: склад> спадщина. успадкування - це потужний інструмент для повторного використання з першого погляду, але технічне обслуговування та нещільне з’єднання за це постраждають. друга хороша порада: технічне обслуговування> повторне використання. абстрактна система може бути дуже потужною, але також важкою в обслуговуванні.

використання фреймворків (як Zend Framework для php) для швидкого розвитку додатків

RAD - хороша річ, щоб рано запустити додаток. але деякі компоненти - особливо ОРМ - будуть стріляти вашими ногами, принаймні, якщо мова йде про масштабованість. Основна проблема тут полягає в тому, що ви пов'язуєте свою доменну логіку для роботи з об'єктами, що стає важко визначити, якщо вам потрібно чисте масштабоване рішення, оптимізоване для баз даних. пам’ятайте про це та заохочуйте своїх розробників використовувати базу даних без високих рівнів абстракції. абстракція бази даних - це міф, а орма - брехня.

KISS

новачки, як правило, хочуть застосовувати всі найкращі практики, встановлювати стандарти кодування, використовувати всі приємні ланцюги інструментів, що б там не було. це працює для деяких розробників, але деякі зіткнуться з розумовою блокадою, якщо справи занадто суворі. тестування одиниць і scm - це справді обов'язково, але хтось, хто починає тестувати одиницю, дійсно повинен дізнатися її цінність, перш ніж він її полюбить. не перестарайтеся, застосовуйте практику поетапно і дивіться, як це працює. KISS також зводиться до коду. іноді найкращий спосіб вирішити важку проблему - це вирішити її неправильно. вам потрібен шість ступенів алгоритму поділу ? просто вибирайте друзів навмання ви можете створити повний додаток навколо нього, з помилковою логікою. якщо замовник врешті-решт вирішить його скинути, всі заощадили багато грошей.

спритний

дізнайтеся про гнучкі методології, екстремальне програмування, scrum тощо. Там багато книг. будь-яка книга зробить вашу команду кращою, але найкраще залучати до неї кожного товариша по команді.


1
Фантастична відповідь! Спасибі. +150 реп. Для вас, сер! Не соромтесь додавати що-небудь ще до публікації, як це відображатиметься вгорі сторінки під запитанням. Такі речі, як @TODO в програмному коді, коментування та документації тощо
Дамієн Рош

2
  • Контроль версій: Якщо у Windows, TortoiseSVN - найкращий, найінтуїтивніший і найпростіший у моєму досвіді.

  • Рамка: 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 з деякими функціями вже працює.


1
Прочитавши цю публікацію і побачивши, що я вже використовую кілька рекомендованих елементів, я вирішив спробувати IDE Netbeans. Чи може хтось порекомендувати будь-які плагіни, які варто було б використовувати разом з ним для розробки PHP / Codeigniter? Також, чи може це добре працювати з Wampserver?
Гортрон

1
@Gortron Я використовую netbeans з кодигнатором. Існує інструмент для автоматичного заповнення коду для шифрування / netbeans: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP - це справді унікальна мова в серці, і розробка на віртуальній машині Linux - хороша ідея. Також уникайте підриву, 2010 рік використовувати щось розподілене (git, hg, bzr). hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.Це, відверто кажучи, фігня. Якщо ви коли-небудь використовували симфонію, рейки або джанго, ви побачите деякі основні проблеми. Немає модульної структури каталогів, не існує інтерфейсу командного рядка. Тоді у вас є основні компоненти, такі як форми та моделі, що містять багато коду. Якщо ви взагалі знаєте будь-які зразки програмного забезпечення, ви побачите, що кодигітайтер висмоктує великий час. Як мінімум, використовуйте Kohana, який роздвоєний CI і зроблено належним чином після смерті громади.
Кейо

Якщо ви працюєте в Windows, я рекомендував би замість phpMyAdmin використовувати SQLyog (у них спільнота ). Я ніколи не знайшов гідної заміни SQLyog в Linux, що шкода ...
Дін Хардінг

1
@keyo, Дякую за посилання. Я додав інструмент автозаповнення до Netbeans, дуже зручний для проекту з великою кількістю функцій в моделях. Я не думаю, що я зараз переходжу з SVN, я лише армія 1, в даний момент немає потреби в розподілених системах.
Гортрон

2

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

Якщо ваш проект має відбутися в наступному році, я б сказав, що знайдіть час, щоб вкласти гроші в Symfony2 та Doctrine2.

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

Щодо IDE, я дуже рекомендую використовувати NuSphere PHPEd або Storm PHP, на жаль, як і всі чудові речі, вони не є безкоштовними.


+1 для ORM. Я витрачав незліченну кількість годин на написання запитів на панелі коду.
Кейо

PHP набагато краще в системі на базі Linux. Особливо, якщо ви хочете коли-небудь використовувати плагін на основі С (приходить до уваги libmemcached або ImageMagick)
Дін Хардінг

деякі чудові речі безкоштовні, а що з Linux?
dan_waterworth

0

Використання діаграми UML приємно, але абсолютно необов’язково. Будь-які діаграми будуть робити, поки ваша команда зрозуміє, що вони означають. Намагання використовувати стандартні, яких ніхто добре не знає, може призвести до проблем і втрати часу.

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

Попросіть когось із обов'язків з перегляду коду, якщо у вас є кілька членів команди старшого віку - змушуйте їх робити рецензії в повороті ( Рада з огляду )


0

У роботі з спільною роботою вам потрібно:

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

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

• код налагодження (xdebug для php): xdebug - це мій вибір

• використання діаграм UML: Це допомагає, коли кожен володіє знаннями з програми програмування та дизайну ОО, проте, це завжди є хорошою практикою

• використання OOP для коду, який може бути використаний для багаторазового використання: І Гнучкість, я думаю, що це ключовий аспект OOP.

• використання фреймворків (як Zend Framework для php) для швидкого розвитку додатків: My Advise - SYMFONY, перша рамка php (не інструментарій). Він має дуже велику спільноту, багато документації та повністю реалізований на php. Я працюю з ним протягом року, і він повністю пов'язується з OOP

• вам також може знадобитися система для відстеження помилок, запитів на функції тощо, наприклад: Mantis або Track . Ці системи є досить простими та простими. Вони також дозволяють вам пов’язати свою підривну діяльність і пов’язати свої зобов’язання з певними функціями або помилками, які люди публікують.

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

У моїй компанії я повинен щодня надсилати електронний лист із повідомленням над тим, над чим працюю, і чи є якісь ускладнення.

Удачі!


0
  • Framework : CodeIgniter, без сумніву. Він має всі функціональні можливості, які вам можуть знадобитися, і не змушує вас використовувати жоден з них, якщо вони вам не потрібні;
  • Контроль версій, IDE : Я досить старий, і я не думаю, що моя відповідь може вам дуже допомогти;
  • Wireframing, UML : стара школа і в цьому теж, але справді: дошки перемагають. Вони гнучкі, розширювані та підтримують будь-яку конвенцію, яку ви вважаєте за потрібне;
  • Адміністрація бази даних : phpmyadmin;
  • ОС сервера розробки : я можу бути банальним, але: Ubuntu. Встановіть LAMP-сервер за лічені секунди; не впадайте в паніку щодо додавання нових бібліотек (страшний imagick: одна команда, виконано); якщо вам подобається PHP, ви, ймовірно, закінчите працювати на сервері linux у виробництві, тому краще почати практикувати. (Відмова: Ubuntu - це не мій улюблений дистрибутив).
  • Різне : grep може бути надзвичайно корисним при налагодженні коду інших poeople (хочете знати, скільки контролерів використовує дану модель? Зроблено!).

редагувати

Я забув найголовніше: специфікації. Напишіть справжні характеристики свого проекту, перш ніж торкатися будь-якого коду. Майте на увазі всі діаграми взаємодії з користувачем. Це врятує вас століття.


0

Контроль версій Оскільки ви працюєте в команді, вам найбільше цікаво, що ви хочете щось розповсюджувати. Ваші кандидати - Git і Mercurial. Це означає, що ваша команда може взяти на себе місце, не порушуючи проект, але все ж відстежувати їх роботу, а потім пересилати ці зобов'язання на центральний сервер. Це також набагато швидше і має менше конфліктів злиття, оскільки код відстежується як набір змін, а не редагування. Прочитайте, хоча посібник з hginit (написаний співзасновником переповнення стека не менше), і ви зрозумієте трохи більше про те, що таке DVCS. http://hginit.com/

Ви також повинні використовувати сховище для розгортання замість rsync або ftp.

Тестова розробка Залежно від того, що ви робите тестування, ви можете витратити багато часу. Я не кажу, що ви повинні повністю його пропустити, для менших проектів це накладні витрати. Якщо ви пишете бібліотеку чи великий довгостроковий проект, обов'язково напишіть тести для цього. Тести допоможуть у фазі технічного обслуговування. Майте на увазі, що TDD не може знайти всіх ваших помилок. Будуть проблеми із користувацьким досвідом, проблеми з компонуванням, проблеми з продуктивністю тощо.

Налагодження Xdebug - це ваш єдиний вибір тут. Він добре інтегрується з Netbeans. Якщо ви відчуваєте необхідність коли-небудь друкувати змінні, вам слід скористатися файлом журналу. Використовуйте функцію журналу фреймворків, це набагато безпечніше у виробництві.

Планування / діаграми Якщо ви використовуєте хороший фреймворк, вам не потрібно занадто багато робити детальні діаграми. Будьте простими та працюйте у коротших циклах випуску, легко перепланувати. Вимоги та технічні характеристики проекту неодмінно змінюються, тому я б не витрачав на них весь ваш час. Пам'ятайте, що специфікація коду IS є на найбільш детальному рівні.

Використовуйте інструмент відстеження помилок (див. Нижче), щоб розбити специфікацію на завдання, які ви можете призначити членам команди. Використовуйте центральний інструмент для документування проектів, трекер помилок, ймовірно, матиме вікі.

Ви можете використовувати такий інструмент, як Mysql Workbench, щоб створити схеми баз даних на діаграмах та експортувати їх як SQL.

Рамки та ООП Це, мабуть, найважливіша частина. Знайдіть собі популярний фреймворк, який підтримуватиме швидкий розвиток та повторне використання коду. Деяким людям не сподобається, що я це кажу, але рамки повинні диктувати ваш спосіб роботи. Він повинен забезпечувати структуру, щоб один розробник міг перемикати проект і точно знати, де знаходиться контролер певної сторінки, що саме є змінними шаблону та як запитувати модель. Деякі рамки дають тут занадто велику гнучкість, і ви побачите, що розробники не завжди використовують фреймворк однаково. Мені подобається філософія пітона; повинен бути один очевидний спосіб зробити все. Ось чому мені подобаються джанго і рейки, вони досить впевнені в собі, і це означає, що я можу подивитися на код когось іншого і зрозуміти, що це робить. Symfony виглядає як найкращий варіант тут,

Існує багато питань, що стосуються рамки, щодо переповнення стека, як цей: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

Відстеження помилок Отримайте у вашої команди хороший трекер помилок, який створений для розробників. Не використовуйте щось над спрощеним, як basecamp. Redmine та Unfuddle - це два приклади чудових помилок помилок, вони також можуть відстежувати час та інтегруватись із вашими сховищами. Ваша команда повинна використовувати цей інструмент для спілкування з питань, а не електронною поштою чи чатом. Це спрощує нового розробника, коли наявна історія помилок і документів. Ця стаття пояснює, що саме потрібно робити будь-якому хорошому трекеру помилок та чому. http://www.joelonsoftware.com/articles/fog0000000029.html


0

Я б рекомендував подивитися на Bazaar для контролю версій. У порівнянні з Git, головна перевага полягає в тому, що він фактично простий у використанні та встановленні в Windows, Mac OS та Linux. Також команди bzr дуже схожі на своїх аналогів svn, тому хтось, хто раніше працював із Subversion, може легко використовувати Bazaar без особливої ​​кривої навчання. Я дивлюся на тебе Гіт.

Крім того, я твердо вірю в те, що не примушувати нічого до ваших розробників. Цей бджіл сказав, що вони дозволяють використовувати IDE, операційну систему тощо, що вони вважають за краще.

Крім цього, я настійно рекомендую вам зробити тести wirte на весь свій код, як би це не було нудно.

Рішення «за» або «проти» імхо не є тим, що ви можете зробити, грунтуючись на рекомендаціях, викладених тут. Я пропоную вам перерахувати ті, які виглядають для вас перспективними, виходячи з їх особливостей, а потім написати невеликий тестовий додаток у кожному з них. (Пишіть те саме щоразу.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.