|
|
|||||||||||||||||||||||||||||
|
Поддержка «чистоты» кода с помощью Eclipse V3.3Источник: IBM developerWorks Россия Катрин Лимпек, Филипп Тидт
Написание "чистого" кода помогает другим разработчикам читать, понимать и сопровождать написанный вами код. Однако не все согласны с определениями "симпатичного", "правильного" или "чистого" кода. У каждого разработчика свой стиль и своё эстетическое чувство. До сих пор Eclipse форматировал импортированный код в простой, функциональной манере с минимальным количеством украшательств. В Eclipse V3.3 эти операции расширены, чтобы предоставить гораздо более широкий спектр возможностей для очистки кода. Eclipse V3.3 позволяет вам выполнять очистку кода, добавлять пропущенный код, а также применять определённый стиль кодирования. Мастер поможет сконфигурировать настройки очистки и сохранить их для дальнейшего использования. Мы обсудим основные принципы очистки кода и дадим общий обзор инструментов, помогающих содержать код в идеальном порядке. Управление конфигурацией параметров очистки кода при помощи профилейКонкретная конфигурация параметров очистки кода называется профилем . Профили можно сохранять, что позволяет передавать свои настройки другим людям, а также применять к текущему коду настройки из предыдущих проектов или настройки, полученные от других разработчиков. В соответствии с принятыми в вашей организации принципами кодирования, они могут применяться к каждому проекту Eclipse, поэтому у всех команд, участвующих в разработке, будет одинаковый стиль кода. Параметры настройки Eclipse предлагают возможности управления профилями. Профили можно создавать, редактировать и удалять. Можно определить профиль, используемый глобально во всем рабочем пространстве. Когда мы в первый раз открываем параметры настройки рабочего пространства и выбираем Java > Code Style > Clean Up, то видим активный профиль Eclipse [built-in] (встроенный). Этот встроенный профиль предварительно настроен и поставляется в комплекте с Eclipse. Всего имеется два встроенных профиля: Eclipse и Save Participant. Они описывают две минимальные конфигурации очистки кода, которые, в сущности, удаляют ненужный код. Настройки встроенного профиля можно увидеть, сделав его действующим профилем. Все подробности отображаются в области детализации. Рисунок 1. Подробная информация по встроенному профилю
Существующие профили можно использовать как своего рода шаблоны, которые могут расширяться или настраиваться. Поэтому выберем в выпадающем меню существующий профиль в качестве действующего и нажмём Edit. Встроенные профили нельзя изменять. Их можно использовать как основу для собственного профиля или в неизменном виде применять к своему коду. Чтобы создать собственный профиль, нажмём на New. Дадим профилю имя и выберем из выпадающего меню существующий профиль для инициализации. Снимем галочку с Open the edit dialog now (открыть диалог редактирования сейчас) и нажмём OK.
Чтобы профиль можно было использовать совместно, используем функцию экспорта. Чтобы открыть профиль, нажмём Edit, а затем Export. Дадим имя файлу профиля, нажмём OK, и профиль готов для совместного использования.
Чтобы применить внешний профиль из XML-файла к проекту, мы должны сначала его импортировать. Нажмём Import в основных параметрах очистки кода, выберем файл и нажмём OK. Типы очистки кодаНастройки очистки кода делятся на пять основных категорий. Для каждой категории имеется своя вкладка, которая состоит из области настроек и области предварительного просмотра. Предварительный просмотр сразу же показывает влияние настроек на код. Попробуем разные настройки и посмотрим, как меняется код в предварительном просмотре. Это даст возможность понять, как каждое изменение влияет на код. Диалог для редактирования всех этих настроек появляется на экране после нажатия на Edit в настройке основных параметров очистки кода или при создании нового профиля с опцией Open the edit dialog now. Далее мы обсудим возможные настройки, их достоинства и недостатки. Поскольку многие настройки - это дело вкуса, мы не будем давать никаких рекомендаций. Обратите внимание, что если вы не выбираете какую-либо опцию, ваш код остаётся таким, как вы его напечатали. Вкладка Code Style (стиль кода)Первая вкладка связана со стилями кодирования и определяет, как должны выглядеть блоки, выражения и описания переменных.
Вкладка Member Accesses (Доступ к элементам)Вторая вкладка позволяет задать, как следует обращаться к элементам (member) ваших типов.
Вкладка Unnecessary code (Ненужный код)Третья вкладка позволяет задавать настройки для удаления неиспользуемого или ненужного кода.
Вкладка Missing Code (Пропущенный код)Четвёртая вкладка позволяет добавлять пропущенный код.
Вкладка Code Organizing (Организация кода)Последняя по порядку, но не по значимости, пятая вкладка помогает организовать код.
Как применять профилиПосле того, как профиль очистки кода создан, применить его к конкретному коду можно разными способами. Самый простой способ - открыть контекстное меню в редакторе Java и выбрать Source (источник)> Clean Up (очистить). Рисунок 9. Открытие мастера очистки кода
В результате будет запущен мастер очистки кода, изображенный ниже. Рисунок 10. Мастер очистки кода
Мастер направляет вас в процессе очистки выбранных источников. Описание в верхнем левом углу показывает, сколько проектов и единиц компиляции будет очищено. Обычно к единицам компиляции применяют уже сконфигурированный профиль. Тем не менее, возможна индивидуальная настройка очистки кода непосредственно перед его применением. Это может быть полезным, если вы хотите проверить, как определённая настройка отразится на коде. Мастер очистки кода можно запустить для любого проекта, пакета или файла Java, если в них содержится хотя бы одна единица компиляции. Например, можно выбрать все проекты Java в рабочей области и запустить мастер. Выполнение очистки кода повлияет на все единицы компиляции в вашей рабочей области, которые могут быть подвергнуты рефакторингу при помощи выбранного профиля. По умолчанию существует один глобальный профиль очистки кода для всей рабочей области. Однако в параметрах проекта можно указать профиль очистки кода для каждого отдельного проекта. Для этого откройте свойства проекта и перейдите к Java Code Style (стиль кода Java)> Clean Up (очистить), как показано ниже. Рисунок 11. Применение профилей
Чтобы выполнить предварительный просмотр результатов очистки кода, нажмите Next в мастере очистки кода. В этот момент мастер подсчитывает изменения в вашем коде. В зависимости от количества выбранных единиц компиляции этот процесс может занять определённое время. На следующей странице вам будут представлены изменения, которые планируется применить. Рисунок 12. Предварительный просмотр результатов
В дереве перечислены все единицы компиляции, которые затронет предполагаемая очистка кода. Вы можете зайти в это дерево, чтобы выбрать различные изменения единицы компиляции. При выборе изменения показывается исходный текст и текст после рефакторинга в форме сопоставления. После обзора изменений вы, возможно, не захотите применять все из них. В этом случае можно просто снять отметку у тех изменений, которые выполнять не нужно. Нажатие Finish запускает выполнение процесса очистки кода. Полезные советыНекоторые рефакторинговые операции очистки, например, Convert for loops to enhanced (преобразовать циклы for в расширенные) или Add missing annotations (добавить пропущенные комментарии), привязаны к версиям Java 5.0 или 6.0 и могут применяться, лишь если исходный файл скомпилирован в соответствии с требуемой версией Java. Мастер очистки кода позволяет выбрать эти рефакторинговые опции независимо от используемой версии Java. Поэтому, если вдруг ваши циклы типа После нескольких запусков мастера очистки кода и правильной настройки вашего профиля, вы, возможно, не захотите при каждой последующей операции очистки снова щёлкать по кнопкам мастера. В этом случае можно просто отключить мастер на странице настройки профилей в Preferences > Java > Code Style > Clean Up. Рисунок 13. Скрыть/показать мастер очистки кода
Выполнение очистки кода на большом количестве ресурсов часто приводит к большому количеству изменений. Мастер позволяет предварительно просмотреть их перед применением. Однако, когда изменения затрагивают сотни файлов, такой просмотр делается неудобным, особенно, если вы ищете определённое изменение. С помощью фильтра можно сузить список изменений, отображаемых на странице предварительного просмотра. Обычно операция форматирования исходного кода затрагивает практически каждый файл, но лишь немногие файлы затрагиваются операцией, добавляющей пропущенную аннотацию запрещенного кода. В этом случае, фильтр помогает найти такие файлы, исключая другие изменения. Фильтр находится в правом верхнем углу на странице предварительного просмотра. Рисунок 14. Применение фильтров
Операции очистки кода могут выполняться не только вручную, но и во время сохранения файла Java. Чтобы включить эту функцию, откройте Window > Preferences > Java > Editor > Save Actions (действия при сохранении) и выберите дополнительные действия. Сконфигурируйте действия по очистке кода, как описано выше, и они будут выполняться при каждом сохранении файла Java. Обратите внимание, что эти действия могут оказаться ресурсоемкими и затормозить работу. Кроме того, если забыть о включенной опции очистки кода, вас может удивить, что только что написанный вами код после сохранения выглядит по-другому. Рисунок 15. Выполнение очистки кода во время сохранения А теперь?Очистка кода является полезным инструментом, улучшающим оформление вашего кода и помогающим другим разобраться в нём. Возможно, она даже сделает ваш код более устойчивым к ошибкам. Однако стиль кодирования - это дело вкуса. Например, люди, которые в прошлом избегали большого количества кавычек, вряд ли теперь будут использовать блоки каждый раз, когда мастер очистки кода будет предлагать это действие. Очистка кода не решает концептуальных или функциональных проблем, по крайней мере, в текущей версии Eclipse. Но она может сэкономить большой объём работы, представляя код в понятном виде. Действия, выполняемые мастером, обширны и решают многие проблемы, связанные со стилями и соглашениями кодирования. Организации должны выбрать собственный стиль и соглашения для кодирования, поэтому полезно, чтобы мастер был расширяемым, хотя в Eclipse V3.3 это не так. Идея очистки кода актуальна не только в мире Java, но также могла бы быть полезна и для других языков, таких как C/C++, PHP, Python, Perl и т. д. Будет интересно посмотреть, как сообщество примет эту функцию и в каких направлениях она будет развиваться.
|
|