[Перевод] 10 советов для продуктивности в CLion, кроссплатформенной С/С++ IDE

Всем привет!

До выпуска нашей первой группы курса «Разработчик C++» остались считанные дни. По итогам неплохо поработали напильником и надфилем над курсом: перекомпоновали домашние задания, обновили версию язык и ещё разное по мелочи. Ну, а пока продолжаем нашу традицию по интересным и полезным материалам.

Поехали.

Судя по собственному опыту разработки, многие разработчики C/C++ пренебрегают идеей, что IDE может сделать их работу продуктивней. Ведь что может быть лучше, чем простые и быстрые Vim или Emac. Что ж, позвольте продемонстрировать. Эти 10 советов CLion поднимут вас на новый уровень продуктивности, помогут сфокусироваться на важных и сложных задачах, в то время как IDE решит за вас рутинные задачи.

Прежде чем начать, познакомимся с CLion, новой кроссплатформенной IDE для разработки на C и C++, созданной JetBrains. Она изначально поддерживает C и C++, включая стандарт C++11 (с некоторыми небольшими ограничениями), libc++ и Boost. Она корректно обрабатывает макросы и шаблоны, а также работает с GCC или Clang (при работе с Windows понадобится или MinGW/MinGW-w64, или Cygwin), GDB, как встроенный дебаггер, и CMake, как система сборки и проектная модель. В дополнении к C/C++ также можно пользоваться JavaScript, XML, HTML и CSS на том же уровне редактирования кода, используя, например, подсветку синтаксиса, анализ, автодополнение, навигацию и рефакторинг.

fcjmjrvtizka4unuadw35oarfps.jpeg

1. Умное автодополнение знает, что вам нужно

В первую очередь, нам всем нужен редактор. Автодополнение кода крайне важно: мы просто начинаем вводить символ (переменная, функция, тип, имя класса) и редактор показывает нам список подходящих предложений. Это просто, но действительно ли нам нужны все те опции, описанные в примере ниже?

gilazdavma--dszgyruxuesyqe8.png

Зачастую нам нужно только что-то с типом idPlayer *. И именно это показывает умное автодополнение CLion! Она автоматически фильтрует предложения, основываясь на контексте кода:

jyhhabung_ieiunxjsm_mhjvume.png

Ах да, а если найден только один возможный вариант, он будет мгновенно использован!

2. Используйте сразу, определяйте позднее

Когда появляется гениальная идея, не хочется тратить время на скучные рутинные задачи. Предположим, вы использовали функцию, которая до сих пор не была имплементирована или даже определена. CLion выделяет ее красным. Нужно ли сразу задержаться для имплементации функции? Вовсе нет! Попросите CLion сгенерировать заглушку и вернитесь к этому моменту позднее. Просто нажмите Alt+Enter:

qnw8munaqcnmzwxfw8q4putqq8g.png

Объявление и определение мгновенно появятся в вашем коде:

td2ab4yftoe5ceqccjohw8w9efo.png

Работает аналогичным образом для переменных и имен классов:

mtxgojkp916fmufliynmwo3u8pc.png

3. Live template«ы для ваших любимых или наиболее используемых фрагментов кода

Как получить цикл или итерацию по диапазону (в стиле C++11) просто напечатав несколько символов? Введите for и нажмите Tab, чтобы получить цикл; или введите iter или itit, а затем нажмите Tab:

slivgws825assmv80irozamni9c.png

При ближайшем рассмотрении окажется, что в Clion можно создавать пользовательские Live Template«ы или «Surround With» шаблоны (которые быстро заворачивают выбранный код в конструкт). Покажем пример, как быстро получить класс, с наследованием из другого существующего класса:

gplpq59a0dhdpp7nlslbc__hnse.png

После добавления нового «cp» шаблона, можно ввести cp в редакторе:

mecnwsnblti4ooymqtrpok37fl8.png

Описание шаблона можно сразу увидеть в выпадающем списке автодополнения. Шаблон расширяется при нажатии Tab. Теперь можно добавить новое название класса, затем выбрать родительский класс и модификатор для него из списка автодополнения:

5mxtp_ugnipccles_ijx96ozea8.png

Вуаля! Новый класс готов.

aspwtlauqnu9f6oqdcerai-0-8q.png

Конечно, можно сгенерировать более сложные шаблоны, включая переменную $SELECTION$ для получения «Surround With» шаблона.

4. Следуйте иерархическому виду

Разработчики читают код значительно чаще, чем пишут его. Перед тем, как добавить новый код или обновить существующий, проводится глубокое и детальное исследование существующей кодовой базы. (Только если вы не начинаете проект с нуля, что редкость.) Во многих случаях продуктивность зависит от того, как быстро можно пробраться сквозь кодовую базу.
Для таких случаев CLion предоставляет широкий спектр возможностей навигации по коду:

  • используйте стандартные инструменты goto объявления/определения;
  • быстро переходите к соответствующему символу, недавним файлам или месту, которые вы правили последним;
  • ищите любой класс, файл или символ по названию;
  • используйте контекстный поиск с Find Usage;
  • перемещайтесь по текущему файлу с использованием вида File Structure;
  • извлекайте пользу из нескольких иерархических видов, включая Call Hierarchy, Type Hierarchy и Imports Hierarchy.

Call Hierarchy — мой любимый. Он позволяет увидеть в деталях весь стек вызовов с ветками. Выглядит очень просто, не правда ли? Одним кликом вы можете переместиться в нужное место в редакторе, а воспользуясь автопрокруткой в Source, сделать процесс еще быстрее:

e5n7fjipbhlzjlgfbfn67hareom.png

5. Меняйте порядок и добавляйте параметры — IDE позаботится об использовании

Рефакторинг — мощный процесс, который помогает улучшить код, сделать его чище и удобней. Некоторые IDE предлагают ограниченное количество способов его автоматизации. В CLion их очень много — от простых и популярных Rename до сложных Change Signature, Extract Function или Class, Inline и многие другие. Можете положиться на CLion, корректность кода сохранится и при внесении изменений рефакторинга.

Позвольте наглядно проиллюстрировать надежность CLion. Предположим, есть функция:

yd7s9vtxd_dvetym4tvlyj8cjde.png

Чтобы добавить новый параметр в эту функцию, я воспользуюсь рефакторингом Change Signature:

a0-uvqh-j3xvavvh-wvaqkt_xdq.png

К слову, добавлять новый тип параметра в этом окне очень просто благодоря автодополнению кода. После того, как я нажимаю «Refactor», Clion обновляет подпись и все использования, заменив значение по умолчанию для данного типа, которое в этом случае равно nullptr:

qf6do8_e3kkr32is3r0um0phbju.png

А что, если я решу упорядочить параметры во время Change Signature? Конечно же, их порядок обновится в соответствии со всеми использованиями:

fgw65ak60s-8zcdlo-_qvorvyfa.png

6. Извлекайте все, с большим количеством опций

Извлечение части кода в отдельную функцию — популярный метод рефакторинга, но что насчет других? Например Extract Typedef, Define, Variable, Parameter или даже Subclass? Опыт их использования в CLion улучшается благодаря небольшим, но полезным деталям. Например, вы можете изменить все вхождения (если их больше одного) при извлечении константы или переменной; объявить константу или параметр статическими; использовать auto тип при извлечении переменной; и так далее и тому подобное:

9l1d0pa0qpdlkn3s1a4piaujcb4.png

7. Неиспользуемый код?»=» в условии? Не проблема!

Следуя закону Мерфи для компьютеров, в каждой нетривиальной программе есть хотя бы один баг. Но давайте сделаем все возможное и исправим как можно больше из них. Пока мы стараемся локализовать и, надеюсь, пофиксить баги, CLion постоянно мониторит ваш код на наличие потенциальных ошибок. Любая подозрительная часть кода подчеркивается в редакторе, и предлагаются опции возможных быстрых фиксов. Для их просмотра достаточно нажать Alt+Enter. IDE также проводит полный Data Flow Analysis для выявления неиспользуемого и недоступного кода:

yjtjshsg5nogcgexl_69dc9gukq.png

CLion не пропустит и вездесущие ошибки C/C++, например,»=» в условии:

y86wolqzxtpjaztj5lli-3auao0.png

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

8. Простая отладка с возможностью смотреть значения переменных прямо в редакторе!

Ключевое преимущество IDE над простым текстовым редактором — опыт дебаггинга. Конечно можно запустить отдельный процесс дебаггинга, но отладка внутри IDE экономит много времени и предоставляет дополнительный полезный функционал.

CLion интегрирует GDB бэкенд, предоставляя все необходимое в интерфейсе и
улучшая опыт отладки некоторыми крайне полезными инструментами. К примеру, каждый раз, когда вы вводите имя переменной для просмотра или выражение для оценки, можно воспользоваться преимуществами автодополнения кода. В отдельном окне инструмента показаны все детали текущего состояния программы. А вот и вишенка на торте: во время отладки IDE показывает значения переменных рядом с их объявлением:

md6p-49lx0p6g0o1bbbrmjacnbw.png

9. Передумали во время отладки? Не перезапускайте — сразу меняйте значения переменных!

Значение отладки заключается в понимании данных и контроле их перемещения в программе. Иногда нужно проверить несколько значений переменной, например, проследить отдельную ветвь выполнения. Не нужно тратить драгоценное время на перезапуск — сразу поменяйте значения в текущей сессии отладки:

8fjv9nkgcgeuw0liayofahfr_ka.png

Теперь мы можем продолжить ту же самую сессию, но с новым присвоенным значением y, равным 55. Как было замечено ранее, IDE показывает значения переменной рядом с их объявлением в редакторе, подчеркивая примененные изменения:

0rizwdes6ktlq5pf0kipd8mjj8i.png

10. Все необходимые инструменты на борту — Не нужно переключаться!
IDE расшифровывается как Integrated Development Environment (Интегрированная Среда Разработки), ее использование означает, что в работе вам больше не потребуется переключаться между несколькими инструментами, например, отдельным vcs приложением, баг-трекером в браузере или даже терминалом. Весь этот инструментарий уже встроен в CLion IDE, чтобы вы могли сфокусироваться на коде с минимумом отвлечений.

Опробуйте эти советы в CLion и убедитесь, что они помогут вам стать эффективней и продуктивней!

THE END

Как всегда ждём вопросы, комментарии тут или заходите на день открытых дверей.

© Habrahabr.ru