Ищу полезные шаблоны кода Eclipse Java [закрыто]

Да, вы можете, alert () - это всего лишь метод JavaScript, вы можете переопределить его функциональность.

window.alert = function alert(msg) {
  console.log('Hidden Alert ' + msg);
};

Не забудьте запустить этот скрипт контента в document_start в манифесте через содержимое манифеста run_at модификатор скрипта.

Я считаю, что есть расширение, которое просто делает это. Разработчик называет его Nice Alert. https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk

505
задан 23 revs, 3 users 96% 9 June 2019 в 18:55
поделиться

22 ответа

Следующие ниже шаблоны кода при необходимости создадут регистратор и правильный импорт.

SLF4J

${:import(org.slf4j.Logger,org.slf4j.LoggerFactory)}
private static final Logger LOG = LoggerFactory.getLogger(${enclosing_type}.class);

Log4J 2

${:import(org.apache.logging.log4j.LogManager,org.apache.logging.log4j.Logger)} 
private static final Logger LOG = LogManager.getLogger(${enclosing_type}.class); 

Log4J

${:import(org.apache.log4j.Logger)}
private static final Logger LOG = Logger.getLogger(${enclosing_type}.class);

Источник .

JUL

${:import(java.util.logging.Logger)}
private static final Logger LOG = Logger.getLogger(${enclosing_type}.class.getName());
418
ответ дан 22 November 2019 в 22:35
поделиться

Мои любимые немногие ...

1: Javadoc, чтобы вставить документ о методе, являющемся методом инъекции объекта Spring.

 Method to set the <code>I${enclosing_type}</code> implementation that this class will use.
* 
* @param ${enclosing_method_arguments}<code>I${enclosing_type}</code> instance 

2: Окно отладки, чтобы создать FileOutputStream и записать содержимое буфера в файл. Используется, когда вы хотите сравнить буфер с прошлым запуском (используя BeyondCompare), или если вы не можете просмотреть содержимое буфера (через inspect), потому что он слишком большой ...

java.io.FileOutputStream fos = new java.io.FileOutputStream( new java.io.File("c:\\x.x"));
fos.write(buffer.toString().getBytes());
fos.flush();
fos.close();
4
ответ дан jeff porter 9 June 2019 в 18:55
поделиться

Раздел кода

//--------------------------------------------------------------
//                       ${title}
//--------------------------------------------------------------
${cursor}

Используйте этот шаблон, чтобы упростить комментирование разделов кода. это не очень сложно, но сэкономило мне много времени:)

1
ответ дан coderatchet 9 June 2019 в 18:55
поделиться

Создайте макет с помощью Mockito (в контексте «операторов Java»):

${:importStatic('org.mockito.Mockito.mock')}${Type} ${mockName} = mock(${Type}.class);

И в «Членах типа Java»:

${:import(org.mockito.Mock)}@Mock
${Type} ${mockName};

Макет недействительного метода для выброса исключение:

${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}
doThrow(${RuntimeException}.class).when(${mock:localVar}).${mockedMethod}(${args});

Макет недействительного метода, чтобы сделать что-то:

${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) throws Throwable {
    Object arg1 = invocation.getArguments()[0];
    return null;
}
}).when(${mock:localVar}).${mockedMethod}(${args});

Проверьте, что смоделированный метод вызывается ровно один раз:

${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.times)}
verify(${mock:localVar}, times(1)).${mockMethod}(${args});

Убедитесь, что смоделированный метод никогда не вызывается :

${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.never)}verify(${mock:localVar}, never()).${mockMethod}(${args});

Новый связанный список с использованием Google Guava (и аналогичный для hashset и hashmap):

${import:import(java.util.List,com.google.common.collect.Lists)}List<${T}> ${newName} = Lists.newLinkedList();

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

package ${enclosing_package};

import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.junit.runner.RunWith;

// TODO autogenerated test stub
@RunWith(MockitoJUnitRunner.class)
public class ${primary_type_name} {

    @InjectMocks
    protected ${testedType} ${testedInstance};
    ${cursor}

    @Mock
    protected Logger logger;

    @Before
    public void setup() throws Exception {
    }

    @Test
    public void shouldXXX() throws Exception {
        // given

        // when
        // TODO autogenerated method stub

        // then
        fail("Not implemented.");
    }
}
// Here goes mockito+junit cheetsheet
24
ответ дан 4 revs, 3 users 74% 9 June 2019 в 18:55
поделиться

list_methods - генерирует методы для добавления, удаления, подсчета и содержит для списка

public void add${listname}(${listtype} toAdd){
    get${listname}s().add(toAdd);
}

public void remove${listname}(${listtype} toRemove){
    get${listname}s().remove(toRemove);
}

public ${listtype} get${listname}(int index){
    return get${listname}s().get(index);
}

public int get${listname}Count(){
    return get${listname}s().size();
}

public boolean contains${listname}(${listtype} toFind){
    return get${listname}s().contains(toFind);
}

${cursor}

id - вставляет аннотации, импорт, поле и получатель для простого JPA @Id

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

public Long getId(){
    return id;
}

${cursor}
${:import (javax.persistence.GenerationType,javax.persistence.GeneratedValue,javax.persistence.Id)}
0
ответ дан Stephen Erdman 9 June 2019 в 18:55
поделиться

Один из моих любимых - foreach :

for (${iterable_type} ${iterable_element} : ${iterable}) {
    ${cursor}
}

и traceout , так как я часто использую его для отслеживания:

System.out.println("${enclosing_type}.${enclosing_method}()");
]

Я только что подумал о другом и однажды нашел его в Интернете, const :

private static final ${type} ${name} = new ${type} ${cursor};
21
ответ дан 3 revs, 2 users 74% 9 June 2019 в 18:55
поделиться

Свойство Bean

private ${Type} ${property};

public ${Type} get${Property}() {
    return ${property};
}

public void set${Property}(${Type} ${property}) {
    ${propertyChangeSupport}.firePropertyChange("${property}", this.${property},     this.${property} = ${property});
}

PropertyChangeSupport

private PropertyChangeSupport ${propertyChangeSupport} = new PropertyChangeSupport(this);${:import(java.beans.PropertyChangeSupport,java.beans.PropertyChangeListener)}
public void addPropertyChangeListener(PropertyChangeListener listener) {
  ${propertyChangeSupport}.addPropertyChangeListener(listener);
}

public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
  ${propertyChangeSupport}.addPropertyChangeListener(propertyName, listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
  ${propertyChangeSupport}.removePropertyChangeListener(listener);
}

public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
  ${propertyChangeSupport}.removePropertyChangeListener(propertyName, listener);
}
10
ответ дан qualidafial 9 June 2019 в 18:55
поделиться

После Java 7 отличный способ настроить средства ведения журнала, которым требуются (или предпочитать) статические ссылки на включающий класс, - это использовать недавно представленный API-интерфейс MethodHandles, чтобы получить класс времени выполнения в статическом контексте.

Пример фрагмента для SLF4J:

private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

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

10
ответ дан 2 revs, 2 users 92% 9 June 2019 в 18:55
поделиться

Для журнала , небольшая полезная деталь для добавления в переменную-член.

private static Log log = LogFactory.getLog(${enclosing_type}.class);
25
ответ дан 22 November 2019 в 22:35
поделиться

Получение SWT-цвета из текущего дисплея:

Display.getCurrent().getSystemColor(SWT.COLOR_${cursor})

Suround with syncexec

PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable(){
    public void run(){
        ${line_selection}${cursor}
    }
});

Используйте одноэлементный шаблон проектирования:

/**
 * The shared instance.
 */
private static ${enclosing_type} instance = new ${enclosing_type}();

/**
 * Private constructor.
 */
private ${enclosing_type}() {
    super();
}

/**
 * Returns this shared instance.
 *
 * @returns The shared instance
 */
public static ${enclosing_type} getInstance() {
    return instance;
}
8
ответ дан 22 November 2019 в 22:35
поделиться

Некоторые дополнительные шаблоны здесь: Ссылка I - Ссылка II

Мне нравится эта:

readfile

 ${:import(java.io.BufferedReader,  
           java.io.FileNotFoundException,  
           java.io.FileReader,  
           java.io.IOException)}  
 BufferedReader in = null;  
 try {  
    in = new BufferedReader(new FileReader(${fileName}));  
    String line;  
    while ((line = in.readLine()) != null) {  
       ${process}  
    }  
 }  
 catch (FileNotFoundException e) {  
    logger.error(e) ;  
 }  
 catch (IOException e) {  
    logger.error(e) ;  
 } finally {  
    if(in != null) in.close();  
 }  
 ${cursor} 

ОБНОВЛЕНИЕ : Версия этого шаблона для Java 7:

${:import(java.nio.file.Files,
          java.nio.file.Paths,
          java.nio.charset.Charset,
          java.io.IOException,
          java.io.BufferedReader)}
try (BufferedReader in = Files.newBufferedReader(Paths.get(${fileName:var(String)}),
                                                 Charset.forName("UTF-8"))) {
    String line = null;
    while ((line = in.readLine()) != null) {
        ${cursor}
    }
} catch (IOException e) {
    // ${todo}: handle exception
}
48
ответ дан 22 November 2019 в 22:35
поделиться

Мне нравится такой сгенерированный комментарий класса:

/**
 * I... 
 * 
 * $Id$
 */

«Я ...» сразу же побуждает разработчика описать, что делает класс. Мне кажется, что я решил проблему недокументированных классов.

И, конечно же, $ Id $ - полезное ключевое слово CVS.

5
ответ дан 22 November 2019 в 22:35
поделиться

Небольшой совет по sysout - мне нравится переименовывать его в "sop". Ничто другое в java-библиотеках не начинается с «sop», поэтому вы можете быстро ввести «sop» и бум, он вставляет.

20
ответ дан 22 November 2019 в 22:35
поделиться

strf -> String.format ("msg", args) довольно просто, но позволяет немного сэкономить на вводе.

String.format("${cursor}",)
9
ответ дан 22 November 2019 в 22:35
поделиться

Ничего особенного для создания кода, но весьма полезно для проверки кода

У меня есть мой шаблон coderev low / med / high выполните следующие действия

/**
 * Code Review: Low Importance
 * 
 *
 * TODO: Insert problem with code here 
 *
 */

А затем в представлении «Задачи» - покажет мне все комментарии проверки кода, которые я хочу рассказать во время встречи.

14
ответ дан 22 November 2019 в 22:35
поделиться

Я использую это для MessageFormat (используя Java 1.4). Таким образом, я уверен, что у меня нет конкатенаций, которые трудно извлечь при интернационализации

i18n

String msg = "${message}";
Object[] params = {${params}};
MessageFormat.format(msg, params);

Также для ведения журнала:

log

if(logger.isDebugEnabled()){
  String msg = "${message}"; //NLS-1
  Object[] params = {${params}};
  logger.debug(MessageFormat.format(msg, params));
}
4
ответ дан 22 November 2019 в 22:35
поделиться

Форматировать строку

MessageFormat - заключить выделение в MessageFormat.

 ${:import(java.text.MessageFormat)} 
 MessageFormat.format(${word_selection}, ${cursor})

Это позволяет мне переместить курсор на строку, расширить выделение на всю строку (Shift-Alt-Up), затем дважды Ctrl-Пробел.

Заблокировать выделение

lock - окружить выделенное строки с попыткой finally lock. Предположим наличие переменной блокировки.

${lock}.acquire();
try {
    ${line_selection}
    ${cursor}
} finally {
    ${lock}.release();
}

NB $ {line_selection} шаблоны отображаются в меню Окружить с (Alt-Shift-Z).

31
ответ дан 22 November 2019 в 22:35
поделиться

И equalsbuilder, адаптация построителя хэш-кода:

${:import(org.apache.commons.lang.builder.EqualsBuilder,org.apache.commons.lang.builder.HashCodeBuilder)}
@Override
public boolean equals(Object obj) {
    return EqualsBuilder.reflectionEquals(this, obj);
}

@Override
public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this);
}
8
ответ дан 22 November 2019 в 22:35
поделиться

Отличный шаблон для объявления регистратора.

Я также создаю linfo, ldebug, lwarn, lerror для уровней журнала, которые я использую чаще.

lerror:

logger.error(${word_selection}${});${cursor}
8
ответ дан 22 November 2019 в 22:35
поделиться

Вызвать исключение IllegalArgumentException с переменной в текущей области (illarg):

throw new IllegalArgumentException(${var});

Лучше

throw new IllegalArgumentException("Invalid ${var} " + ${var});  
17
ответ дан 22 November 2019 в 22:35
поделиться

Я знаю, что удаляю мертвый пост, но хотел поделиться этим для Ради завершения:

Правильная версия шаблона генерации синглтона, которая устраняет дефектную конструкцию блокировки с двойной проверкой (обсуждалась выше и упоминалась в другом месте)

Шаблон создания синглтона: Назовите это createdingleton

static enum Singleton {
    INSTANCE;

    private static final ${enclosing_type} singleton = new ${enclosing_type}();

    public ${enclosing_type} getSingleton() {
        return singleton;
    }
}
${cursor}


Для доступа к синглетонам, созданным с использованием выше:

Шаблон ссылки синглтона: Назовите его getsingleton :

${type} ${newName} = ${type}.Singleton.INSTANCE.getSingleton();
26
ответ дан 22 November 2019 в 22:35
поделиться

Еще несколько шаблонов здесь .

Включает:

  • Создание объекта даты с определенной даты
  • Создание нового универсального списка ArrayList
  • Настройка регистратора
  • Журнал с указанным уровнем
  • Создание нового универсального HashMap
  • Итерация по сопоставить, распечатать ключи и значения
  • Анализировать время с помощью SimpleDateFormat
  • Прочитать файл построчно
  • Записать и повторно выбросить обнаруженное исключение
  • Распечатать время выполнения блока кода
  • Создать периодический таймер
  • Записать строку в файл
14
ответ дан 22 November 2019 в 22:35
поделиться