воскресенье, 23 июля 2017 г.

Инструментарий C++-программиста

Юрий “yurembo” Язев

Интегрированная среда Visual Studio содержит исчерпывающий набор инструментов для разработки различных приложений под популярные настольные, серверные и мобильные платформы. Не только Windows, но и macOS, iOS, Linux, Android. И это прекрасно на самом деле!

Между тем, есть ряд задач, которые Visual Studio не охватывает или решает не очень хорошо. В то же время, для каждой из них есть решение от третьих разработчиков. Я составил джентельменский набор C++-разработчика, в результате использования которого совместно с Visual Studio, на мой взгляд, делает программирование на этом языке продуктивнее, приятнее и менее трудозатратным.

1. У JetBrains есть ReShaper C++, его стоимость составляет $199 в год. С другой стороны, у Whole Tomato  есть Visual Assist стоимостью $99 на все время. Предлагаю остановиться на втором. Visual Assist представляет собой плагин для студии. Он значительно расширяет работу IntelliSense, проводит статический анализ кода, тем самым позволяет выявлять орфографические ошибки до непосредственной компиляции, осуществляет подсветку синтаксиса, расширяет средства форматирования, поиска, переименования. Также он добавляет возможность оптимизации и генерации кода. Предоставляет средства рефакторинга (выделение кода в метод, etc.). Данная тулза оптимизируют процесс кодинга, делает его приятнее, избавляя программиста от многих головняков.

2. Когда программируешь на C++, необходимо следить за указателями во избежание появления утечек памяти. С умными указателями ситуация значительно упростилась, однако проблема не исчерпана. Для обнаружения утечек памяти можно воспользоваться средствами, предлагаемыми разработчиками процессоров: Intel, AMD. Они, особенно первая, предлагают широкий ряд средств. В некоторых случаях они платные. И во всех случаях сложные в использовании. А нам нужна тулза, которую можно юзать, не покидая студию. На самом деле, Visual Studio предоставляет средство для поиска утечек памяти, но оно неудобно в использовании и недостаточно информативно. Для исправления этих невзгод можно воспользоваться свободной утилитой Visual Leak Detector (VLD). Для его использования надо в Visual Studio указать на библиотечный и заголовочный файлы: <vld.h>. В конце выполнения программы под отладчиком Visual C++, VLD выведет отчет по всем обнаруженным утечкам памяти вместе с номерами строк, где они были выявлены. Кроме того, VLD можно установить с помощью NuGet.

3. Разработка, основанная на тестах (TDD), становится предпочтительным (если не основным) методом разработки программного обеспечения. Почему так произошло и что такое TDD – тема отдельного разговора. Для покрытия тестами C++-кода имеется довольно много фреймворков. Среди них: CppUtest, CppUnit и другие. Между тем, самым удобным и содержащим наибольшее количество полезных средств я считаю GoogleTest. Можно скачать с GitHub’а и установить самостоятельно, предварительно построив фреймворк из исходников. А можно воспользоваться тулзой Extension and Update, входящей в Visual Studio, которая автоматом подключит фреймворк к открытому проекту.

4. Если в качестве системы контроля версий ты используешь GitHub, то, чтобы, не выходя из студии коммитить изменения (и осуществлять другие операции с кодом), рекомендую установить свободную тулзу GitExtension. Она добавит в студию дополнительную вкладку, на которой ты можешь работать с GitHub подобно Team Foundation Server. Но закрытый репозитарий на GitHub стоит денег. Если платить жалко, команда разработчиков небольшая (до 5 человек включительно), можно воспользоваться сервисом BitBucket. Он подобен GitHub, однако для маленьких проектов закрыты репозитарий предоставляется бесплатно. Если же надо работать с Git посредством внешнего клиента (предположим ты не используешь Visual Studio), тогда рекомендую использовать клиент SourceTree. Из всего многообразия существующих Git-клиентов этот, на мой взгляд, самый удобный. К слову, он, как и вышеупомянутый сервис, разработан австралийской компанией Atlassian.

5. И последняя по порядку, но не по значимости незаменимая тулза для программирования на C++ - это библиотека Boost. Многое из того, что сейчас находится в стандартной библиотеке языка взяло свое начало в Boost: умные указатели, r-value ссылки, семантика перемещения и прочее. Кроме имеющихся в STL контейнеров, Boost предоставляет дополнительные. Но Boost этим не ограничивается, по большому счету, это библиотека библиотек. И она среди прочего включает расширенные средства для сетевого программирования, математического моделирования, многопоточного программирования, работой с графами, обобщенного и метапрограммирования, различные алгоритмы и мн. др.

Каждый из перечисленных выше инструментов бесспорно заслуживает отдельной статьи. Сегодня я лишь перечислил входящие в набор C++-разработчика тулзы, использование которых улучшит жизнь программиста.

Комментариев нет:

Отправить комментарий