
Наблюдая за со своими знакомыми, которые недавно начали изучать программирование или перешли на Eclipse c другой IDE, я часто замечаю что они почти не используют вспомогательные инструменты среды разработки. Они либо не знают о них вообще, либо не понимают какую практическую пользу они могут принести.
Данная статья предназначена в основном для начинающих в работе с Eclipse. Но в процессе подготовки статьи я сам узнал о нескольких простых и удобных инструментах, которые за два года активной разработки ни разу не использовал.
В данной статье речь пойдет о навигации и редактировании.
Внутри скриншоты.
Так как, основная польза данных инструментов проявляется при использовании горячих клавиш, я составил следующие таблицы:
Навигация
![]() ![]() |
![]() |
Описание |
Ctrl+F |
⌘+F |
Простой поиск/замена |
Ctrl+H |
Ctrl+H |
Продвинутый поиск/замена |
Ctrl+Shift+R |
⌘+⇧+R |
Открыть ресурс |
Ctrl+Shift+T |
⌘+⇧+T |
Открыть логическую структуру(Класс) |
Ctrl+Shift+G |
⌘+⇧+G |
Найти вхождения переменной, метода, класса |
F4 |
F4 |
Открыть меню иеарархии |
Ctrl+LeftClick |
⌘+LeftClick |
Перейти к реализации или определению класса, функции, переменной |
F3 |
F3 |
Перейти к определению |
Ctrl+T |
⌘+T |
Перейти к реализации |
Ctrl+L |
⌘+L |
Перейти к линии с определенным номером |
Alt+( left right ) |
⌘+( [ ] ) |
Перемещение в предыдущее/следующее место просмотра в редакторе |
Ctrl+Q |
Ctrl+Q |
Перейти к последнему месту редактирования |
Ctrl+E |
⌘+E |
Показать список открытых в редакторе файлов |
Ctrl+F6 (Ctrl+Shift+F6) |
⌘+F6 (⌘+⇧+F6) |
Следующий/предыдущий редактор |
Ctrl+O |
⌘+O |
Показать поля и методы класса |
Ctrl+T |
⌘+T |
Показать иерархию класса |
F2 |
F2 |
Открыть javadoc |
Ctrl+Shift+(up | down) |
Ctrl+⌥+(up | down) |
Перейти к следующему/предыдущему методу |
![]() ![]() |
![]() |
Описание |
Ctrl+Space |
Ctrl+Space |
Автодополнение |
Ctrl+1 |
⌘+1 |
Возможные действия |
Ctrl+Shift+O |
⌘+⇧+O |
Организация импорта пакетов |
Ctrl+Shift+F |
⌘+⇧+F |
Автоформатирование кода |
Shift+Alt+S |
⇧+⌥+S |
Меню генерации кода |
Shift+Alt+T |
⇧+⌥+T |
Меню рефакторинга |
Shift+Alt+R |
⇧+⌥+R |
Переименование переменной, метода, класса |
Shift+Alt+M |
⌘+⌥+M |
Выделение части кода в отдельный метод |
Ctrl+Alt+(up|down) |
⌘+⌥+(up|down) |
Дублирование строки |
Alt+(up|down) |
⌥+(up|down) |
Перемещение строки |
Ctrl+/ Ctrl+7 |
⌘+/ ⌘+7 |
Однострочный комментарий |
Ctrl+Shift+/ |
⌘+⇧+/ |
Многострочный комментарий |
Ctrl+D |
⌘+D |
Удалить строку или выделенный фрагмент |
Рассмотрим каждый инструмент более подробно:
Простой поиск/замена




Данный инструмент присутствует в многих текстовых редакторах. Предоставляет возможность находить нужные вхождения текста в текущем документе. И при необходимости быстро заменить на другой текст.
Существует возможность поиска при помощи регулярных выражений, с помощью которой можно составить сложный поиск, однако используется крайне редко для поиска по одному классу.
Если выделить текст и применить данный инструмент — выделенный текст сразу подставится в поле поиска.
Применение:
— Быстрый переход к нужной части кода;
— Замена одного слова на другое. При необходимости написать две функции, которые идентичные по логической структуре, но работают с разными коллекциями, быстрее написать одну функцию, скопировать и сделать замену.
Продвинутый поиск/замена




Данный инструмент имеет расширяет возможности, который был рассмотрен ранее.
Основные особенности:
— поиск по всем проектам, а не по одному;
— возможен как полнотекстовый поиск так и типизированный;
— при большом количестве файлов полнотекстовый поиск занимает большое количество времени.
Применение:
— Найти вхождения элемента или текста во всех проектах.
Открыть ресурс




Применение:
Быстрое открытий файла с данными или классом.
Открыть логическую структуру(Класс)




Можно ввести только заглавные буквы класса. Например, для поиска класса AbstractDogFactory достаточно ввести ADF.
Также можно использовать *.
Применение:
Быстрое открытие файла с классом. Другие файлы игнорируются.
Найти вхождения переменной, метода, класса




Для выделенного элемента ищет его использование по всем проектам.
Применение:
Намного быстрее чем обычный поиск. Достаточно выделить элемент, применить инструмент и на экране список мест, где этот элемент используется.
Открыть меню иеарархии




Перейти к реализации или определению класса, функции, переменной



При зажатой клавише Ctrl левый клик мышкой по элементу производит переходит к его определению или реализации.
Применение:
— легко обнаружить где объявлялась переменная;
— быстрый переход в реализацию класса или метода.
Перейти к определению



Переход к определению элемента, на котором стоит курсор.
Перейти к реализации



Переход к реализации элемента, на котором стоит курсор.
Перейти к линии с определенным номером



Переход к строке с заданным номером.
Применение:
При взаимодействии программисты для того чтобы указать место в коде — называют файл и строку.
Перемещение в предыдущее/следующее место просмотра в редакторе



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



Возвращается на предыдущее место где редактировался исходный код.
Применение:
Быстрый возврат на место работы.
Показать список открытых в редакторе файлов




Применение:
Быстрый переход между файлами.
Следующий/предыдущий редактор




Данные сочетания клавиш не всегда удобны, по-этому имеет смысл переназначить их к примеру на Ctrl+Tab / Ctrl+Shift+Tab
Для быстрого переключения подойдет: Ctrl+Page Up/Page Down — Linux/Windows. Ctrl+Fn+Up/Down — OS X
Показать поля и методы класса




При повторном нажатии горячих клавиш в список добавляются методы из классов — родителей
Применение:
— быстрая оценка структуры класса;
— быстрый переход в нужный метод.
Показать иерархию класса




При повторном нажатии: разворачивает иерархию в обратную сторону и показывает реализованные интерфейсы.
Применение:
Быстрый переход в родительские классы.
Открыть javadoc




Перейти к следующему/предыдущему методу



Автодополнение



Инструмент дает возможность не писать полные имена функций, классов и переменный, а только их часть, программист выбирает завершение из предложенных.
Однако многие не знают некоторых особенностей автодополнения в eclipse:
— если при выборе автодполнения нажать Ctrl+Enter вместо Enter, слово которое стоит правее курсора заменится на автодополненное.
— автодополнения работает для всех классов, даже для тех, для которых еще не сделан import. Если вы автодополните такой класс — импорт добавится автоматически.
— автодополнение работает для новых переменных:
если вы написали
Point2D
и вызовите автодополнение, то получите
Point2D point2d
— в eclipse присутствуют шаблоны для быстрого написания:
syso
получим
System.out.println();
Наиболее популярные шаблоны:
— syso
— for
— while
— switch
— catch
Посмотреть все шаблоны, а так же добавить свои можно в настройках, в вкладке «Templates».
Возможные действия



На мой взгляд самый полезный инструмент в процессе написания кода.
На основе того, на какой строке стоит курсор и есть ли выделение текста, eclipse предлагает возможные варианты изменений и дополнений.
Примеры работы инструмента:
— создание загрушек для реализации методов интерфейса или абстрактного класса
public class Run implements Runnable {
}
действия на строчке с названием класса
public class Run implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
}
}
— создание новых методов
Если в текущей части кода необходим метод, а он еще не существует.
boolean success = isSuccess();
создается метод
private boolean isSuccess() {
// TODO Auto-generated method stub
return false;
}
— объявление переменных
Если необходимо использовать результат работы функции
isSuccess();
объявляется переменная с правильным именем
boolean success = isSuccess();
— выделение константы
Если внутри кода есть цифра или текст, который необходимо вынести в константу, выделем его и применим инструмент:
String success = "success";
private static final String SUCCESS = "success";
Организация импорта пакетов



Удаление импортов не используемых пакетов и добавление недостающих.
Автоформатирование кода



Приведение кода в читабельный вид:
— делает правильные табуляции;
— добавляет/убирает пробелы;
— убирает лишние отступы;
— ограничивает длину строки — переносит текст на следующую другую строку.
Работает для всего выделенного участка кода, или для всего класса.
Применение:
Иногда быстрее написать плохо отформатированную функцию и нажать горячие клавиши, чем писать сразу красиво.
Меню генерации кода



Автоматическая генерация — - get и set методов;
— заготовок переопределенных и реализуемых функций;
— hashcode и equals;
— toString;
— конструкторы.
Применение:
Не стоит тратить время на стандартные методы, если их реализации не является специфической.
Меню рефакторинга




Переименование переменной, метода, класса



Переименование выделенного метода. Благодаря рефакторингу метод будет переименован по всему проекту.
Выделение части кода в отдельный метод




Выделение выделенной части в новый метод. Все возможные дубликаты этой части кода в данном классе автоматически заменятся на вызов нового метода.
Дублирование строки



Применение:
Если следующая строка будет похожа на текущую — быстрее скопировать текущую и изменить ее, чем писать еще раз.
Перемещение строки



Применение:
Быстрый перенос части кода, без необходимости копировать и вставлять.
Однострочный комментарий



Многострочный комментарий



При использование на закомментированном коде — комментарии убираются.
Удалить строку или выделенный фрагмент



UPDATE: Исправил и дополнил статью.
Большое спасибо arturphoenix,AgentSIB,mishadoff,mdcool,Lihonosov,Aivean,anoshenko,lany,abusalimov,bimeg, netslow,majus за дополнения и комментарии.
Некоторые инструменты косвенно относятся к навигации и редактированию, по-этому я не включил их в статью, но я постораюсь их включить в следующую.