Вы можете создавать различные шаблоны кода Java в Eclipse через
Окно> Настройки> Java> Редактор> Шаблоны
например
sysout
расширен до:
System.out.println(${word_selection}${});${cursor}
Вы можете активировать это, набрав, sysout
а затемCTRL+SPACE
Какие полезные шаблоны кода Java вы сейчас используете? Включите название и описание этого и почему это круто.
Я ищу оригинальное / новое использование шаблона, а не встроенную существующую функцию.
- Создать Log4J logger
- Получить цвет SWT с дисплея
- Syncexec - Eclipse Framework
- Singleton Pattern / Enum Singleton Generation
- ReadFile
- Const
- Проследить
- Формат Строка
- Код комментария
- Формат строки
- Попробуй наконец заблокировать
- Формат сообщения i18n и лог
- Equalsbuilder
- Hashcodebuilder
- Инжекция пружинных объектов
- Создать файлOutputStream
System.out.println(${word_selection}${});${cursor}
значит? Похоже, есть способ выбрать слово и автоматически заключить его вsysout
вызов, я прав? Как?Ответы:
Следующие шаблоны кода создадут регистратор и, при необходимости, создадут правильный импорт.
SLF4J
Log4J 2
Log4J
Источник .
июле
источник
Некоторые дополнительные шаблоны здесь: Ссылка I - Ссылка II
Мне нравится этот:
ReadFile
ОБНОВЛЕНИЕ : Java 7 версия этого шаблона:
источник
StandardCharsets.UTF_8
болееCharset.forName("UTF-8")
.Форматировать строку
MessageFormat - окружить выделение MessageFormat.
Это позволяет мне переместить курсор на строку, расширить выделение до всей строки (Shift-Alt-Up), затем дважды нажать Ctrl-Space.
Блокировка выбора
заблокировать - окружить выделенные строки попыткой блокировки наконец. Предположим наличие переменной блокировки.
${line_selection}
Шаблоны NB отображаются в меню Surround With (Alt-Shift-Z).источник
lock
иunlock
.acquire
иrelease
используются для семафоров, и их использование в блоке try-finally не так настоятельно рекомендуется, как с блокировками .Я знаю, что я бью мертвый пост, но хотел поделиться этим для завершения:
Правильная версия шаблона генерации синглтона, которая преодолевает ошибочную конструкцию двойной проверки блокировки (обсуждалась выше и упоминалась где-то еще)
Шаблон создания синглтона: назовите это
createsingleton
Чтобы получить доступ к синглетам, сгенерированным выше:
Одиночная ссылка Шаблон: Назовите это
getsingleton
:источник
${enclosing_type}
- предназначено?${primary_type_name}
пример:public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Добавьте фрагмент кода для итерации
Map.entrySet()
:Шаблон:
Сгенерированный код:
источник
${}
и вместо того${cursor}
, чтобы включить «итерацию табуляции» между полями. Спасибо.Ибо
log
, полезная маленькая песенка, которую нужно добавить в переменную-член.источник
Создайте макет с помощью Mockito (в контексте «операторов Java»):
И в «членах типа Java»:
Макет пустого метода, чтобы вызвать исключение:
Думайте о пустом методе, чтобы что-то сделать:
Убедитесь, что смоделированный метод вызывается ровно один раз:
Убедитесь, что смоделированный метод никогда не вызывается:
Новый связанный список с использованием Google Guava (и аналогичный для hashset и hashmap):
Также я использую огромный шаблон, который генерирует класс Test. Вот сокращенный фрагмент, который каждый желающий должен настроить:
источник
Нулевые Проверки!
источник
PreConditions.checkNotNull(...)
Метод гуавы является очень читаемой альтернативой (особенно при статическом импорте)Один из моих любимых - foreach :
И traceout , так как я часто использую его для отслеживания:
Я просто подумал о другом и однажды нашел его в Интернете, const :
источник
traceout
уже доступен в Eclipse какsystrace
.Небольшой совет по sysout - мне нравится переименовывать его в «sop». Ничто другое в java-библиотеках не начинается с "sop", так что вы можете быстро набрать "sop" и boom, он вставит.
источник
Создайте исключение IllegalArgumentException с переменной в текущей области (illarg):
Лучше
источник
Ничего особенного для производства кода - но весьма полезно для обзоров кода
У меня есть мой шаблон coderev low / med / high, сделайте следующее
А затем в представлении «Задачи» - будут показаны все комментарии к обзору кода, которые я хочу высказать во время встречи.
источник
Еще несколько шаблонов здесь .
Включает в себя:
источник
Ведение журнала slf4j
источник
Боб Собственность
PropertyChangeSupport
источник
После Java 7 отличный способ настроить средства ведения журнала, которым требуются (или предпочитать) статические ссылки на включающий класс, - это использовать недавно представленный API-интерфейс MethodHandles, чтобы получить класс времени выполнения в статическом контексте.
Пример фрагмента для SLF4J:
Помимо того, что он является простым фрагментом в любой IDE, он также менее хрупок, если вы реорганизуете определенные функции в другой класс, потому что вы не будете случайно носить имя класса с ним.
источник
Вызвать код в потоке GUI
Я связываю следующий шаблон с ярлыком
slater
для быстрой отправки кода в потоке графического интерфейса.источник
При тестировании кода я иногда пропускал удаление некоторых syso . Поэтому я сделал себе шаблон под названием syt .
Перед компиляцией я всегда проверяю свои TODO и никогда не забуду снова удалить System.out.
источник
strf -> String.format("msg", args)
довольно просто, но экономит немного печатать.источник
String.format("${string}",${objects})
потому что Eclipse позволяет мне переключаться между моей строкой и моим списком объектов.String.format(${word_selection}${},)${cursor}
сначала выберите строку, а затем используйте 'sf'. Добавьте% s и так далее ...Получить цвет SWT из текущего дисплея:
Suround с syncexec
Используйте шаблон проектирования Singleton:
источник
И equalsbuilder, адаптация hashcodebuilder:
источник
Шаблон для объявления логгера отличный.
Я также создаю linfo, ldebug, lwarn, lerror для уровней журналов, которые я использую чаще.
lerror:
источник
Создать все для события
Поскольку создавать события в Java довольно сложно - все эти интерфейсы, методы и все, что нужно написать только для одного события, - я создал простой шаблон для создания всего необходимого для одного события.
Если у вас есть события, которые разделяют одно
EventObject
, просто удалите настроенное событие, вставленное шаблоном, и измените соответствующие частиraise___()
иon____()
.Я написал хороший, маленький, элегантный механизм обработки событий с использованием универсального интерфейса и универсального класса, но он не будет работать из-за того, как Java обрабатывает универсальные шаблоны. знак равно
Редактировать : 1) Я столкнулся с проблемой, когда потоки добавляли / удаляли слушателей, когда происходило событие. Не
List
может быть изменено во время использования, поэтому я добавилsynchronized
блоки, где список слушателей доступен или используется, блокируя сам список.источник
Вставьте методы испытаний, которые должны быть даны, когда
Недавно я видел аналогичную версию этой версии во время парного программирования с очень хорошим разработчиком и другом, и я думаю, что это может быть хорошим дополнением к этому списку.
Этот шаблон создаст новый метод тестирования в классе, следуя подходу Дано - Когда - Тогда» из парадигмы поведенческой разработки (BDD) для комментариев, в качестве руководства для структурирования кода. Имя метода будет начинаться со слова «следует», и вы сможете заменить оставшуюся часть фиктивного имени метода «CheckThisAndThat» наилучшим описанием ответственности за метод тестирования. После заполнения имени, TAB приведет вас прямо к
// Given section
, чтобы вы могли начать вводить свои предварительные условия.Я сопоставил его с тремя буквами "tst", с описанием "Методы испытаний должны быть заданы, когда тогда";)
Надеюсь, вы найдете его таким же полезным, как и я, когда увидел это:
источник
Весенний впрыск
Я знаю, что это немного поздно для игры, но вот один, который я использую для Spring Injection в классе:
источник
Вот конструктор для неинстанцируемых классов:
Это для пользовательских исключений:
источник
Мне нравится сгенерированный комментарий класса:
«Я ...» немедленно побуждает разработчика описать, что делает класс. Я, кажется, улучшить проблему недокументированных классов.
И, конечно же, $ Id $ - это полезное ключевое слово CVS.
источник
Я много использовал эти фрагменты, искал
null
значения и пустые строки.Я использую шаблоны аргументов в качестве первого кода в моих методах для проверки полученных аргументов.
testNullArgument
Вы можете изменить сообщение об исключении в соответствии со стандартом вашей компании или проекта. Тем не менее, я рекомендую иметь какое-то сообщение, содержащее имя оскорбительного аргумента. В противном случае вызывающая сторона вашего метода должна будет заглянуть в код, чтобы понять, что пошло не так. (A
NullPointerException
без сообщения выдает исключение с довольно бессмысленным сообщением "null").testNullOrEmptyStringArgument
Вы также можете повторно использовать шаблон проверки нуля сверху и реализовать этот фрагмент, чтобы проверять только пустые строки. Затем вы использовали бы эти два шаблона для создания кода выше.
Однако в приведенном выше шаблоне есть проблема, заключающаяся в том, что если аргумент in является окончательным, вам придется внести некоторые изменения в полученный код (
${varName} = ${varName}.trim()
произойдет сбой).Если вы используете много заключительных аргументов и хотите проверить наличие пустых строк, но не должны обрезать их как часть своего кода, вы можете использовать это вместо этого:
testNullFieldState
Я также создал несколько фрагментов для проверки переменных, которые не отправляются в качестве аргументов (большая разница заключается в типе исключения, который теперь используется
IllegalStateException
вместо).testNullOrEmptyStringFieldState
testArgument
Это общий шаблон для проверки переменной. Мне потребовалось несколько лет, чтобы по-настоящему научиться ценить этот, сейчас я часто его использую (в сочетании с вышеупомянутыми шаблонами, конечно!)
Вы вводите имя переменной или условие, которое возвращает значение, за которым следует операнд ("==", "<", ">" и т. Д.) И другое значение или переменную, и в случае сбоя теста результирующий код генерирует исключение IllegalArgumentException.
Причина слегка усложненного предложения if со всем выражением, заключенным в «! ()», Состоит в том, чтобы сделать возможным повторное использование условия теста в сообщении об исключении.
Возможно, это будет сбивать с толку коллег, но только если им придется смотреть на код, который им может и не понадобиться, если вы выбросите подобные исключения ...
Вот пример с массивами:
Вы получите этот результат, вызвав шаблон, набрав «from.length» [TAB] «== to.length».
В результате получается намного смешнее, чем ArrayIndexOutOfBoundsException или подобное, и может фактически дать вашим пользователям шанс выяснить проблему.
Наслаждайтесь!
источник
Я использую это для MessageFormat (используя Java 1.4). Таким образом, я уверен, что у меня нет конкатенаций, которые трудно извлечь при интернационализации
i18n
Также для регистрации:
журнал
источник
Мои любимые несколько ...
1: Javadoc, чтобы вставить документ о методе, являющемся методом инъекции объекта Spring.
2: Окно отладки, чтобы создать FileOutputStream и записать содержимое буфера в файл. Используется, когда вы хотите сравнить буфер с прошлым запуском (используя BeyondCompare), или если вы не можете просмотреть содержимое буфера (через inspect), потому что он слишком большой ...
источник