Сегодняшние слухи и громкие слова вроде «быстрая разработка приложений» (RAD), AJAX (мы теперь не можем ждать даже перезагрузки страницы) и методики «Agile» дают нам понимание, какие требования выдвигаются в мире, в котором мы с вами живем.
Однако, разработка
быстрее не означает, что работать становится
тяжелее — это лишь означает, что работать нужно
разумнее. В этой статье вы найдете десять основных советов, которые помогут вам ускорить разработку ваших проектов.
1. Используйте фреймворки

Фреймворки абстрагируют регулярно используемый код, предоставляя вам фундамент и структуру для разработки веб-приложений.
Классический пример фреймворка это
Rails, фреймворк для разработки веб-приложений на языке Ruby. Предоставляя готовые решения и пакеты (например, методы для валидации формы) он не только сохраняет ваше время, которое вы бы потратили на написание собственного кода, но и гарантирует, что готовые решения были протестированы и проверены другими разработчиками.
То же самое можно сказать и о JavaScript-фреймворках, например о
MooTools. Он так же ускоряет разработку, предоставляя решения, которые были широко протестированы разработчиками ядра и сообществом для кроссбраузерности. Есть и другие варианты для клиентского программирования, такие как
JQuery,
Prototype и
YUI. Если вы не хотите использовать «мэйнстримовые» продукты, можете воспользоваться списком
перспективных фреймворков (многообещающих, если хотите).
Для разработки серверной части, попробуйте
CakePHP,
CodeIgniter или
Symfony, если вы работаете с PHP. Или, если вы используете поддерживаемые Microsoft технологии, например, C# и VB, ваш выбор, скорее всего, упадет на .NET.
Вы можете попробовать даже CSS-фреймворки, вроде
960 Grid или
BluePrint что бы молниеносно и без лишних затрат описывать структуру вашей страницы.
2. Используйте интегрированные среды разработки (IDE)
Разумеется, вы можете разрабатывать свои веб-приложения в простых текстовых редакторах, например в Блокноте, и использовать FTP, но я думаю, что большинство все-таки согласится, что это не самый эффективный путь для разработки комплексных и сложных проектов.
Интегрированная среда разработки — приложение, которое несет в себе все инструменты, которые могут вам понадобиться при разработке даже огромных проектов. Возможности IDE достаточно обширны, мы рассмотрим некоторые из них:
- Управление проектом и решения для командной разработки.
- Инструменты для отладки и диагностики ошибок.
- Подсказки по синтаксису и авто-заполнение (предполагает, что вы собираетесь писать).
- Подсветка синтаксиса.
- Встроенный FTP, который позволяет синхронизировать ваши локальные и удаленные файлы на сервере.
«IDE» — причудливый термин, с которым некоторые могут быть незнакомы, но, наверняка, все слышали об
Adobe Dreamweaver. Dreamweaver является интегрированной средой разработки, так как несет в себе все функции, указанные выше и помогает вам разрабатывать и писать код намного быстрее (обычно, Dreamweaver используют для front-end разработки, но имеется поддержка некоторых серверных технологий, например PHP или ASP.NET).
Сейчас существует достаточно много IDE и все, что вам или вашей команде нужно, это выбрать одну из них. В самые популярные полнофункциональные IDE можно включить
Eclipse,
Komodo IDE,
NetBeans,
Visual Studio, и
Aptana Studio.
Если вы
все еще хотите использовать
просто текстовые редакторы, как минимум, проверьте
список текстовых редакторов для программистов.
3. Модульность (уместная, разумеется)
Модульность — ключевая практика для создания сложных, гибких и расширяемых веб-систем. По сути, это означает разбивание кода на более компактные компоненты, нежели хранить их в куче, в больших файлах.
Данная практика связана с определенными временными затратами (т.к. вам нужно грамотно продумывать структуру файловой системы), но зато мы сэкономите время потом, когда систему нужно будет расширять.
Также, модульность держит ошибки
заключенными (в маленькие компоненты); если что-то выйдет из строя, вы потратите намного меньше времени на поиск практического решения ошибки.
Но
излишняя модульность может сильно увеличить объем кода, а много лишних операторов «include» может резко затормозить работу вашей системы. Так что всегда старайтесь найти золотую середину между
слишком много и
недостаточно (компромисс, короче).
4. Отлаживайте front-end компоненты более эффективно с помощью браузерных инструментов

Ничего не может быть хуже кроссбраузерной несовместимости и ошибок рендеринга. Это может даже сорвать вас на разрушение чего-нибудь. Однако, использование браузерных утилит и плагинов делает диагностику и исправление ошибок намного более быстрым и эффективным.
Firebug и
Web Developer являются отличными времясберегающими инструментами и одними из
самых популярных продуктов на рынке. Firebug позволяет достаточно просто просмотреть DOM-дерево, посмотреть как и что работает, «на лету» изменять CSS-стили, HTML-разметку, отлаживать и профилировать JavaScript-код, помогая выяснить что же заставляет ваши скрипты падать. Web Developer, в свою очередь, дает вам доступ к интересным возможностям, например, возможность кликнуть на тот или иной элемент и посмотреть, какие CSS-объявления в данный момент на него распространяются, а также позволяет отключить CSS и JavaScript чтобы посмотреть, какой пользователь увидит страницу при отключенных функциях.
Если вам требуется отлаживать Internet Explorer, попробуйте
IE Developer Toolbar, который имеет примерно тот же функционал, что и Firebug с Web Developer. Еще несколько инструментов для отладки и поиска ошибок в IE можно найти
здесь.
5. Повторно-используемый код
Если вы вдруг поймали себя на написании того же самого кода еще и еще раз, скорее всего вам нужно переобдумать структуру системы. Подумайте над изучением общих
шаблонов проектирования, которые помогут вам создавать методы, функции и объекты, достаточно гибкие и годные к повторному использованию.
Например, если вы часто используете БД, вы, возможно, захотите разработать
Database Access Class для управления соединениями, запросами и выводом информации.
6. Командная разработка и работа с проектом в сети

Есть вероятность — вам
не придется работать одному. Если вы работаете в команде разработчиков, или работаете на кого-нибудь (тот же менеджер проекта или клиент), вы должны увидеть явные преимущества командной работы и трекинга проекта онлайн.
Меньше времени на административные обязанности и бесконечные встречи (или еще хуже — разговоры тет-а-тет) —
больше времени на, непосредственно, написание кода.
Инструменты вроде
Basecamp,
Lighthouse, и
activeCollab дает вашей команде общую точку сбора для работы и слежения за статусом того или иного проекта. Вы можете выставлять дедлайны и цели проекта, при этом всегда сохраняя синхронизовацию между членами команды, предохраняя вас от ответов на письма и встреч для проверки статуса/подведения итогов.
Подобные инструменты помогут вам расставлять приоритеты и держать организованные и документированные проекты централизованно, в одном месте.
7. Автоматизируйте форматирование кода и стандартаризацию
Всегда нужно стандартиризировать форматирование всего вашего кода не только потому, что это хорошая практика но и для того, что бы, вернувшись к коду потом, вы могли его с легкостью понять.
Автоматизированные форматтеры кода позволяют вам приводить код в порядок простым кликом пункта, вместо пробежки от строки к строке и проверки, все ли следует вашим стандартам форматирования. Также, автоматизированное форматирование снижает шанс на ошибки, которуые вы могли бы допустить, форматирую код вручную.
Существует множество инструментов, которые помогут вам с этой проблемой и многие из них реализованы даже как
веб-сервисы. В случае с CSS, достаточно популярна утилита с открытым исходным кодом
CSSTidy (
Clean CSS, онлайн версия CSSTidy). Для HTML существует
HTML Tidy.
Для скриптовых языков можете применять
PHP Source Code Formatter,
Ruby Script Beautifier, и
Code Beautifier Plus (который умеет работать с C#, ActionScript и Java).
8. Уделяйте больше времени формированию требований и проектированию (планированию)
Несмотря на то, что некоторые не уделяют
слишком много времени планированию проекта от начала и до конца, это
все еще важно, уделить достаточно времени на то, что бы убедиться, что вы получили всю нужную для разработки информацию. Пренебрежение временем на формирование требований может также привести к
неожиданным расширениям функционала, из-за непредвиденных изменений в требованиях.
9. Используйте уже написанный код

Нет
никакой необходимости изобретать колесо. Если вы собираетесь разработать какое-либо решение, которое видели где-то еще, возможно кто-то уже написал его для вас (да и не только для вас, для всех). Если вы используете PHP,
PHP Classes Repository предоставляет коллекцию готовых классов и скриптов, которые вы можете свободно скачивать и использовать.
Hot Scripts предоставляет решения на многих языках. Если же вы ищете сниппеты, вам поможет
devSnippets.
10. Урежьте функционал
Вы должны оценивать необходимость какой-либо новой функции в вашем веб-приложении и решать, стоят ли того затраты времени на ее разработку. Пользователям
действительно нужны персональные RSS-каналы для категорий редко обновляемой CMS?
Вам действительно нужен style switcher, который определяет географическое положение пользователей?
Проводите дискуссии; функции, которые никак не помогут конечным пользователям не только увеличат время разработки, но и осложнят интерфейс.
Полезные ссылки:
А что думаете вы?
Вы можете разделить свои соображения об ускорения разработки в комментариях.
Либо, в комментариях к
оригиналу.
От себя: буду рад любым замечаниям по ошибкам в тексте.
комментарии (112)
Статья очень хорошая. Прекрасная систематизация. Этого зачастую и не хватает.
Но я, все-таки, приверженец jQuery :-)
jQuery — больше для веб сайтиков
ExtJS — для разработки веб-приложений
Нужен ли вам Ext.JS? Если использовали jQuery и «бед не знали» — зачем переходили?
По поводу правильности использования: после внедрения Ext.JS в ASP.NET, у нас тут внутри компании появился небольшой фреймворк, который позволяет эффективно использовать Ext.JS в ASP.NET.
Да, зачастую «хакаем», зачастую работает только в ИЕ (у нас требование: ИЕ обязательно, остальное как получится), часто сидим в отладке. Но сказать, что без Ext.JS мы бы написали подобные приложения быстрее — чистые враки :)
Вот пара неплохих скринкастов:
первый, второй.
От Эклипса, почему то воротит. Да и тормозит он даже на сильной машинке — будь здоров (чего не скажешь о NetBeans).
А для новичка плюсы от NetBeans очевидны — все работает из коробки.
Не спорю, что для Java — Eclipse — #1 Open Source решение, но для PHP и Python я бы больше посоветовал NetBeans.
а так очень приятный, и дебаг работает
Специально сел, поставил, начал настраивать…
Первые минут 10 — ну неудобно, криво, громоздко…
А потом очень понравилось (опять же прикрутил поддержку SVN)
Так что попробуйте пересилить себя — вдруг понравится? ;-)
1. используйте фреймворки — и вы не узнаете о тонкостях реализаций и приятных ощущениях от того, что вы говорите что делать, а не подстраиваетесь под фреймворк;
2. Используйте интегрированные среды разработки (IDE) — и вы никогда не сможете собрать элементарный проект в командной строке средствами компилятора, а возможно даже и не узнаете, что такое точка входа;
3. Модульность (уместная, разумеется) — в меру, проектирование не должно побороть затраты на программирование;
…
7. Автоматизируйте форматирование кода и стандартаризацию — вы же про IDE говорили, в смысле комбинацию клавиш нажимать? странно, что еще при автоформатировании IDE не спрашивают какие нотации применять (:;
8. Уделяйте больше времени формированию требований и проектированию (планированию) — очень трогательно, как работа программиста;
9. Используйте уже написанный код — и вы всегда будете потребителем и никогда не узнаете о том, что ваш код работал бы в разы быстрее «уже написанного»;
10. Урежьте функционал — сокройте функционал, он вам ой как пригодится при расширении.
естественно, тут доля юмора, но не поддавайтесь на эти «способы». это «способы» — как стать серым и невостребованным программистом. если вы уже востребованы, то, конечно, ваше право решать по каждому из «способов», потому что решения ваши будут временем и опытом подтверждены.
Имхо, это способы вначале писать более-менее нормальный код. Умный программист — всегда найдет способы для своего дальнейшего развития. Неумный же, полагаясь на эти методы, станет хорошим «серым» программистом, которые тоже очень нужны и полезны и иногда даже более полезны чем некоторые юные «гении» от программинга, которые действительно перспективны, но их неорганизованность сводит весь их потенциал к нулю.
Как один из примеров. Зачем мне знать все тонкости если я и так уже большинство знаю и для меня это превращается постепенно в рутину? Рутины нужно избегать при разработке, либо поручать тем, кому это ещё не рутина.
я говорил о тех, кто хочет научиться программировать, а в итоге учится копипастить примеры из документации к очередному фреймворку, не понимая и третьей части кода. думаю, частенько с таким сталкиваетесь.
Интересная фраза.
Но в моем понимании .NET Framework — это больше как платформа, а фреймворки под него — это уже фреймворки в контексте данной статьи. Как без .NET Framework на C# писать-то :)
Простой пример:
«2. Используйте интегрированные среды разработки (IDE) — и вы никогда не сможете собрать элементарный проект в командной строке средствами компилятора, а возможно даже и не узнаете, что такое точка входа;»
А оно надо? Обычному программеру — не надо. Продвинутые — сами найдут где про это прочитать.
Ваш юмор про эти пункты весьма уместен, но для того чтобы самому все прощупать и все понять — нужны… ну как минимум годы. Чтобы действительно чувствовать — что, где и когда надо делать и что использовать. Такие профи — дорогие и очень востребованные спецы и ими становятся очень немногие и далеко не сразу. Но до этого — будут кучи проб и ошибок. Имхо, данные «10 способов» позволяют эти ошибки уменьшить.
раньше мерились знаниями, а теперь гигагерцами и выученными хоткеями.
Но для того, что бы использовать необходимые инструменты, мне, например, нужна нормальная машина. А сначала я тоже сидел на P4 с 1.5ГГц и 256 оперативы (со временем, это стало ужасно).
в развитии остановились те, кто без NetBeans не могут простейшую программу написать, а без фреймворка не могу обратиться к базе данных.
выше пояснил уже.
Да, и кирпчи надо делать самому, иначе нмкагда не узнаете как правильно обжигать глину…
аргументы у вас откровенно слабые, раз уж на личности переходите.
Да я не пытался никого переубедить.
Вы же типичный тролль, которого я ради развлечения немного покормил.
хотя. о чем это я? как можно оспорить ваши аргументы: «тролль» и рекомендации (:
удачи.
Ваш первый пост — образец троллинга. Нескрытое провокационное утверждение.
Так что самый что ни на есть тролль. Хотя может и не сознательный.
По моему ровно наоборот. Я пока не встречал фреймворка, который бы позволял делать что-то не самое банальное не вникая в тонкости реализации фреймворка, а вникать там есть куда, и есть чему поучиться.
Давно хочется заняться юнит тестами и, наконец, понять их на 100%, но времени все не хватает. Вот бы если кто-то рассказал..:-)
у нас автоматизированные тесты для веб-приложений пишутся в Selenium IDE. и покрывают почти весь функционал, в то же время unit-тестами обычно покрывают 50-60% функционала.
Автоматизированные тесты — это те, которые проводятся не человеком, а машиной.
Это могут быть и юнит-тесты. Скажем так, юнит-тесты являются автоматизированными тестами.
А то, о чем вы говорите — тесты в Selenium — это автоматизированные функциональные тесты.
В самом первом абзаце смущает фраза «методики «Agile» и AJAX», я конечно со второго прочтения понял, что вы сначала указали «методики agile», а потом указали технологию ajax, и все же резануло по глазам.
Почему фреймворк назвали symfony? Потому что Фабьен Потенсьер хотел дать фреймворку короткое имя, легко запоминающейся, не ассоциирующейся с другими проектами, содержащее буквы «s» (Sensio) и «f» (framework).
У меня лично опыт большой. Но не в web-разработке. Поэтому мне — полезно :-)
Вы забыли упомянуть про систему контроля версий — Subversion, или теперь есть еще что-то более модное. Но с такой штукой пропадают всякие проблемы синхронизации, когда кто и где и чего изменил и т.д. Даже для одиночки очень полезная вещь
11. используйте системы контролья версий (cvs,svn, git) по вкусу. Любой лучше чем ничего.
"как же хорошо работать с svn, а не с «тебе не нужен этот файл?» :)))" (Баш)
у нас на фирме к subversion прикручен php codeСniffer, что силно помогает в п.7.
12. MCV. значительно экономит время, особенно при повторном использовании. п. 5
про юнит-тесы уже говорили.
* юнит-тесты
http://www.phpscriptor.com/tutorial/pear/package.php.php-codesniffer.svn-pre-commit.html