Данная статья является моим переводом!

To read this aritcle in English
Читати цю статтю українською мовою
Читать эту статью на русском языке

За последние несколько лет Rails помог Ruby достичь огромной популярности. Одна из основных причин– это время, которое Rails может сэкономить вам. Работая в хорошо устроенном фреймворке, многие разрабатываемые решения упрощаются, и становится проще быть более организованным. Добавьте такие отличные инструменты как ORM, модульное тестирование, имитация (заглушки) и т.д. и вы получите мощную установку для эффективной и качественной разработки.
Всегда были и наверняка будут споры по поводу лучшей платформы, но я хочу вам показать, что большинство из этих аргументов в основном не соответствуют действительности. В зависимости от того, какую платформу для разработки вы выбрали, в любой из них доступны практически одинаковые инструменты, в том или ином виде. В любом случае, для меня, общими компонентами, которые помогают писать качественный код, быстрее и легче в обслуживании, являются: хороший IDE, легкое в использовании модульное тестирование и имитация, ORM, MVC-фреймворк и хорошая библиотека JavaScript.
Я работаю .Net разработчиком на постоянной основе и PHP разработчиком от случая к случаю. Мне нравятся обе среды по нескольким причинам. Я расскажу о каждом из этих компонентов детально и объясню, почему я считаю их важными. Потом, в конце статьи, я предоставлю списки каждого из этих компонентов для разных языков (.Net, Java, PHP, Python и Ruby). Я решил перечислить только бесплатные или open source инструменты, потому что их легко испробовать и все мы не прочь сэкономить пару баксов.

Интегрированная среда разработки (IDE)
На мой взгляд, это наиболее существенное. Конечно, вы можете писать код в блокноте и компилировать с помощью командной строки, но это наверняка будет дольше и потребует больше дисциплины, чтобы оставаться организованным. Хороший IDE позволяет проще управлять проектом (все файлы сгруппированы с возможностью табулированного обзора), подсвечивать синтаксис, компилировать (если это применимо), а также автокомплиты.
IDE становятся все более утонченными и позволяют с помощью плагинов расширить функциональность, например, svn и управление git в IDE.
Моя любимая IDE это Visual Studio. Существует и другие хорошие программы, как NetBeans и Eclipse, но по какой-то причине я отдал предпочтение Visual Studio.

Модульное тестирование и имитация
Эти два пункта идут рука об руку. Программа не может считаться завершенной без соответствующего тестирования. У многих людей возникают споры, когда дело доходит до тестирования. Я тоже относился к этому довольно скептически. Мне казалось странным – тратить время на написание кода для тестирования реального кода, над которым я работал. В итоге я решил попробовать это и изменил свой стиль программирования. Когда концентрируешься на том, как протестировать свой код, ты пишешь его чище, и это хорошо – иметь быстрый способ узнать, не произвело ли данное изменение какие-либо поломки или нарушения.

Объектно-реляционное отображение (ORM)
Если вы когда-то использовали ORM, то знаете, что оно может сэкономить большое количество времени. Одним из сомнений перед использованием ORM была производительность. Я боялся, что использование ORM сделает мои приложения медленнее, но я ошибался. Мне стоило задаться вопросом, стоила ли низкая производительность большой экономии времени. Ответ на этот вопрос – однозначное ДА! Очень редко ORM становится источником низкой производительности приложения, а если и становится, то можно произвести рефакторинг для ее повышения или использовать SQL непосредственно, если в этом будет необходимость.
Все сводится к тому, чтобы не беспокоиться о задачах производительности до того, как они появятся. Да, это важно, заботиться о производительности, но это не должно беспокоить при использовании ORM.

MVC фреймворк
MVC стал очень популярным, частично благодаря Rails, и это революция в способе выполнения веб-разработки. Ключевым компонентом его популярности является разделение разных частей вашей программы на отдельные кусочки. Это разделение облегчает тестирование, улучшает проектирование и делает ваше приложение в целом более легким в обслуживании.

Библиотеки JavaScript
Кажется, что библиотеки JavaScript сегодня уже есть на все случаи жизни. Помню, еще недавно их не было так много, и JavaScript не был так распространен. Библиотеки JavaScript важны для продуктивности. Они не должны компенсировать невысокое знание JavaScript, необходима твердая основа, дополнена ее хорошим пониманием. Библиотека позаботиться о совместимости с браузером и операциях на низком уровне, что позволит сосредоточиться на выполнении работы.

ASP.Net
IDE: Visual Studio 2008 Express
Unit Testing: NUnit
Mocking: Rhino Mocks
ORM: NHibernate
MVC: ASP.NET MVC
JavaScript: jQuery

Java
IDE: NetBeans
Unit Testing: JUnit
Mocking: EasyMock
ORM: Hibernate
MVC: Struts
JavaScript: jQuery

PHP
IDE: PHPEclipse
Unit Testing: PHPUnit
Mocking: PHPMock
ORM: Propel
MVC: Symfony
JavaScript: jQuery

Python
IDE: PyDev
Unit Testing: PyUnit
Mocking: PythonMock
ORM: SQLObject
MVC: Django
JavaScript: jQuery

Ruby
IDE: RadRails
Unit Testing: Test::Unit
Mocking: Mocha
ORM: Sequel
MVC: Rails
JavaScript: jQuery

Оригинал статьи