É possível criar vários modelos de código Java no Eclipse via
Janela> Preferências> Java> Editor> Modelos
por exemplo
sysout
é expandido para:
System.out.println(${word_selection}${});${cursor}
Você pode ativar isso digitando sysout
seguido deCTRL+SPACE
Quais modelos de código Java úteis você usa atualmente? Inclua o nome e a descrição dele e por que é incrível.
Estou procurando um uso original / novo de um modelo, em vez de um recurso existente existente.
- Criar log4J logger
- Obter cores swt da tela
- Syncexec - Estrutura Eclipse
- Padrão Singleton / Enum Singleton Generation
- Readfile
- Const
- Traçar
- Formatar sequência
- Revisão do código do comentário
- Formato da cadeia
- Tente Finalmente Bloquear
- Formato de mensagem i18n e log
- Equalsbuilder
- Hashcodebuilder
- Injeção de Objetos de Mola
- Criar FileOutputStream
System.out.println(${word_selection}${});${cursor}
significa? Parece que há uma maneira de selecionar uma palavra e colocá-la automaticamente dentro de umasysout
chamada, estou certo? Quão?Respostas:
Os seguintes modelos de código criarão um criador de logs e as importações corretas, se necessário.
SLF4J
Log4J 2
Log4J
Fonte .
JULHO
fonte
Alguns modelos adicionais aqui: Link I - Link II
Eu gosto deste:
readfile
ATUALIZAÇÃO : A versão Java 7 deste modelo é:
fonte
StandardCharsets.UTF_8
sobreCharset.forName("UTF-8")
.Formatar uma sequência
MessageFormat - envolva a seleção com um MessageFormat.
Isso permite que eu mova o cursor para uma string, expanda a seleção para a string inteira (Shift-Alt-Up) e pressione Ctrl-Space duas vezes.
Bloquear a seleção
bloquear - rodeie as linhas selecionadas com uma tentativa de finalmente bloquear. Suponha a presença de uma variável de bloqueio.
Os
${line_selection}
modelos de notas aparecem no menu Surround With (Alt-Shift-Z).fonte
lock
eunlock
.acquire
erelease
são usados para semáforos e seu uso em um bloco try-finally não é tão fortemente recomendado quanto nos bloqueios .Sei que estou chutando um post morto, mas queria compartilhar isso para concluir:
Uma versão correta do modelo de geração de singleton, que supera o design de bloqueio com falha e com verificação dupla (discutido acima e mencionado em outro local)
Modelo de criação de Singleton: Nomeie isso
createsingleton
Para acessar singletons gerados usando acima:
Referência de Singleton Predefinição: Nome
getsingleton
:fonte
${enclosing_type}
pretendido?${primary_type_name}
exemplo de uso de enum :public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Acrescente o trecho de código para iterar sobre
Map.entrySet()
:Modelo:
Código gerado:
fonte
${}
e que, em vez de${cursor}
, habilita a "iteração de tabulação" entre os campos. Obrigado.Para
log
, um pouco de talento útil para adicionar na variável de membro.fonte
Crie uma simulação com o Mockito (no contexto "Instruções Java"):
E em "membros do tipo Java":
Zombe de um método nulo para lançar uma exceção:
Zombe de um método nulo para fazer algo:
Verifique o método simulado chamado exatamente uma vez:
Verifique se o método simulado nunca é chamado:
Nova lista vinculada usando o Google Guava (e semelhante para hashset e hashmap):
Também uso um modelo enorme que gera uma classe de teste. Aqui está um fragmento reduzido que todos os interessados devem personalizar:
fonte
Verificações nulas!
fonte
PreConditions.checkNotNull(...)
método na goiaba é uma alternativa muito legível (principalmente com importações estáticas)Um dos meus amados é foreach :
E rastreio , já que estou usando muito para rastreamento:
Eu apenas pensei em outro e encontrei na Internet algum dia, const :
fonte
traceout
já está disponível no Eclipse comosystrace
.Uma pequena dica sobre o sysout - eu gosto de mudar o nome para "sop". Nada mais nas bibliotecas java começa com "sop", para que você possa digitar rapidamente "sop" e boom, ele é inserido.
fonte
Lance uma IllegalArgumentException com variável no escopo atual (illarg):
Melhor
fonte
Nada sofisticado para produção de código - mas bastante útil para revisões de código
Eu tenho o meu coder template baixo / médio / alto, faça o seguinte
E, em seguida, na exibição Tarefas - mostrará todos os comentários de revisão de código que desejo trazer durante uma reunião.
fonte
Mais alguns modelos aqui .
Inclui:
fonte
log do slf4j
fonte
Propriedade Bean
PropertyChangeSupport
fonte
Após o Java 7, uma ótima maneira de configurar os registradores que precisam (ou preferem) referências estáticas para a classe envolvente é usar a API MethodHandles recém-introduzida para obter a classe de tempo de execução em um contexto estático.
Um exemplo de snippet para SLF4J é:
Além de ser um trecho simples em qualquer IDE, também é menos quebradiço se você refatorar certa funcionalidade em outra classe, porque você não carregará acidentalmente o nome da classe.
fonte
Chamar código no encadeamento da GUI
Vinculo o modelo a seguir ao atalho
slater
para despachar rapidamente o código no thread da GUI.fonte
Ao testar com o código, às vezes perdi a exclusão de alguns sistemas . Então eu criei um modelo chamado syt .
Antes de compilar, sempre verifico meus TODOs e nunca esquecerei de excluir um System.out novamente.
fonte
strf -> String.format("msg", args)
bastante simples, mas economiza um pouco de digitação.fonte
String.format("${string}",${objects})
porque o Eclipse me permite tabular entre minha string e minha lista de objetos.String.format(${word_selection}${},)${cursor}
primeiro selecione uma string e use 'sf' nela. Adicione% s e assim por diante ...Obtenha uma cor SWT na exibição atual:
Ao redor com syncexec
Use o padrão de design singleton:
fonte
E uma adaptação equalsbuilder, hashcodebuilder:
fonte
O modelo para a declaração do criador de logs é ótimo.
Também crio linfo, ldebug, lwarn, lerror para os níveis de log que uso com mais frequência.
lerror:
fonte
Crie tudo para um evento
Como os eventos são meio difíceis de criar em Java - todas essas interfaces, métodos e outras coisas para escrever apenas para um evento -, criei um modelo simples para criar tudo o que é necessário para um evento.
Se houver eventos que compartilhem um único
EventObject
, basta excluir o personalizado inserido pelo modelo e alterar as partes apropriadas deraise___()
eon____()
.Eu escrevi um mecanismo de eventos agradável, pequeno e elegante, usando uma interface genérica e uma classe genérica, mas não funcionou devido à maneira como o Java lida com os genéricos. = (
Edit : 1) Corri para o problema em que tópicos foram adicionando / removendo ouvintes enquanto um evento estava ocorrendo. Como
List
não pode ser modificado enquanto estiver em uso, adicioneisynchronized
blocos nos quais a lista de ouvintes está sendo acessada ou usada, bloqueando a própria lista.fonte
Inserir métodos de teste devem ser fornecidos quando e então
Eu vi uma versão semelhante a esta recentemente durante a programação em pares com um desenvolvedor e amigo muito bons, e acho que poderia ser uma boa adição a esta lista.
Este modelo criará um novo método de teste em uma classe, seguindo a abordagem Fornecido quando e depois do paradigma de desenvolvimento orientado a comportamento (BDD) nos comentários, como um guia para estruturar o código. Ele iniciará o nome do método com "should" e permitirá que você substitua o restante do nome do método fictício "CheckThisAndThat" pela melhor descrição possível da responsabilidade do método de teste. Depois de preencher o nome, o TAB o levará diretamente ao
// Given section
, para que você possa começar a digitar suas pré-condições.Eu o mapeei para as três letras "tst", com a descrição "Métodos de teste devem ser dados quando então";)
Espero que você ache tão útil quanto eu quando o vi:
fonte
Injeção de mola
Eu sei que isso é meio tarde para o jogo, mas aqui está um que eu uso para o Spring Injection em uma classe:
fonte
Aqui está um construtor para classes não instanciadas:
Este é para exceções personalizadas:
fonte
Eu gosto de um comentário de classe gerado assim:
O "eu ..." imediatamente incentiva o desenvolvedor a descrever o que a classe faz. Eu pareço melhorar o problema de classes não documentadas.
E, claro, o $ Id $ é uma palavra-chave útil do CVS.
fonte
Eu tive muito uso desses trechos, procurando
null
valores e cadeias vazias.Eu uso os modelos de "teste de argumento" como o primeiro código nos meus métodos para verificar os argumentos recebidos.
testNullArgument
Você pode alterar a mensagem de exceção para se ajustar ao padrão da sua empresa ou projeto. No entanto, eu recomendo ter alguma mensagem que inclua o nome do argumento incorreto. Caso contrário, o responsável pela chamada do seu método terá que procurar no código para entender o que deu errado. (A
NullPointerException
sem mensagem produz uma exceção com a mensagem bastante absurda "nula").testNullOrEmptyStringArgument
Você também pode reutilizar o modelo de verificação nula acima e implementar esse snippet para verificar apenas cadeias vazias. Você usaria esses dois modelos para produzir o código acima.
O modelo acima, no entanto, tem o problema de que, se o argumento in for final, você precisará alterar um pouco o código produzido (o
${varName} = ${varName}.trim()
erro irá ocorrer).Se você usa muitos argumentos finais e deseja procurar por seqüências de caracteres vazias, mas não precisa apará-las como parte do seu código, pode optar por isso:
testNullFieldState
Também criei alguns trechos para verificar variáveis que não são enviadas como argumentos (a grande diferença é o tipo de exceção, agora sendo um
IllegalStateException
).testNullOrEmptyStringFieldState
testArgument
Este é um modelo geral para testar uma variável. Levei alguns anos para realmente aprender a apreciar este, agora eu o uso muito (em combinação com os modelos acima, é claro!)
Você insere um nome de variável ou uma condição que retorna um valor, seguido por um operando ("==", "<", ">" etc) e outro valor ou variável e, se o teste falhar, o código resultante lançará uma IllegalArgumentException.
O motivo da cláusula if ligeiramente complicada, com toda a expressão envolvida em um "! ()", É possibilitar a reutilização da condição de teste na mensagem de exceção.
Talvez isso confunda um colega, mas apenas se ele precisar examinar o código, o que talvez não seja necessário se você lançar esse tipo de exceção ...
Aqui está um exemplo com matrizes:
Você obtém esse resultado acessando o modelo, digitando "from.length" [TAB] "== to.length".
O resultado é muito mais engraçado que um "ArrayIndexOutOfBoundsException" ou semelhante e pode realmente dar aos usuários a chance de descobrir o problema.
Aproveitar!
fonte
Eu uso isso para MessageFormat (usando Java 1.4). Dessa forma, tenho certeza de que não tenho concatenações difíceis de extrair ao fazer a internacionalização
i18n
Também para registro:
registro
fonte
Meus poucos favoritos são ...
1: Javadoc, para inserir um documento sobre o método ser um método de injeção de objeto Spring.
2: Janela Debug, para criar um FileOutputStream e gravar o conteúdo do buffer em um arquivo. Utilizado para quando você deseja comparar um buffer com uma execução passada (usando BeyondCompare) ou se não conseguir visualizar o conteúdo de um buffer (via inspecionar) porque é muito grande ...
fonte