Criando modelos no IDE Jetbrains

Entrada


Hoje eu quero dar um pequeno tutorial de visão geral de modelos na WBS da Jetbrains. Os exemplos abaixo serão implementados em Java no Intellij IDEA, mas o mecanismo de criação é o mesmo para outros idiomas e produtos da empresa. Eu acho que todos os programadores neste IDE usaram os modelos internos. Por exemplo, ao escrever fori, pressione TAB ou ENTER e você obtém um loop for no qual precisa especificar o nome e a condição da variável, e o restante do código é gerado para você.

for (int i = 0; i < ; i++) { } 

Ou sout -> System.out.println (), familiar a todos os programadores java. Portanto, o Intellij tem suporte para criar seus próprios modelos de código. Surpreendentemente, não encontrei quase nenhuma informação em russo e um pouco de inglês (já que há boa documentação ) quando me deparei com esse recurso, embora ele acelere bastante e ajude no desenvolvimento. E agora, quando eles se mudaram, decidi escrever um pequeno artigo sobre isso. Talvez ajude os programadores pouco experientes, eles próprios conseguirão descobrir tudo ou há muito tempo o usarão, mas acho que é bastante adequado para todos os outros. Então, vamos começar.

Criar modelo


Para começar, vamos fazer um exemplo simples, por exemplo, a constante do logger. Vá para Configurações -> Editor -> Modelos ao vivo . Aqui, você pode visualizar grupos de modelos prontos e criar seus próprios - clicando no sinal de mais na parte direita do painel. Você também pode criar um modelo separado e, em seguida, ele será adicionado ao grupo de usuários. Após clicar, uma janela será exibida abaixo, na qual você precisará inserir a abreviação, descrições e o texto real do modelo. Também haverá uma inscrição de aviso " Nenhum contexto aplicável " e o botão Definir ao lado, clicando no qual veremos uma lista de contextos possíveis - HTML, XML, Java, Javascript, CSS etc. Alguns têm subitens, por exemplo, em Java, é a capacidade de usar o modelo em um método, em um comentário, no nível da classe, em outro lugar ou em qualquer lugar ao mesmo tempo. Vamos pegar o pacote Java inteiro como exemplo.

Escreveremos log como uma abreviação. Aqui está uma linha como esta:

 private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName()); 

Em seguida, clique no botão à direita - Editar variáveis . Na janela que se abre, vemos uma tabela com um registro - CLASS_NAME, que corresponde à variável que especificamos no texto do arquivo como o nome da classe. Possui os campos Expressão , Valor padrão , Ignorar , se definido . O primeiro campo é uma seleção na qual são oferecidos todos os tipos de valores que podem ser substituídos. A segunda é apenas uma linha na qual podemos escrever qualquer coisa citando-a. Bem, o terceiro campo nos oferece pular a edição da variável se ela for especificada em uma das primeiras propriedades. No nosso caso, precisamos do valor do className () selecionado no campo Expressão . Se desejar, você pode selecionar o passe de edição. Clique em OK , após Aplicar, e você pode verificar. Criamos uma classe com qualquer nome, escrevemos dentro do log, pressionamos TAB e voila - temos um logger que, em vez de CLASS_NAME, tem o nome da classe atual.

Um exemplo:

 public class CodeTemplates { private static final Logger LOGGER = Logger.getLogger(CodeTemplates.class.getName()); } 

Recursos e recursos:


1. Ao criar modelos, existe uma variável-chave $ END $ indicando onde estará o cursor quando você criar o modelo (Por padrão, no final do código do modelo).

 System.out.println($END$); 

2. A segunda variável-chave é $ SELECTION $ . Se ele estiver presente no seu modelo, ele aparecerá no menu Surround With ( Ctrl + Alt + T ). Isso é necessário se você deseja agrupar seu código.

 System.out.println("$SELECTION$"); 

Digamos que você tenha uma palavra ou frase, por exemplo, TESTE - coloque o cursor no final da palavra, pressione Ctrl + Alt + T e, entre os modelos, você pode escolher o seu, e então acontece:

 System.out.println("TEST"); 

PS: para um bloco de código ou texto, basta selecioná-lo primeiro.

3. Algumas das extensões em Extensões podem usar vários tipos de valores como argumentos, incluindo outras extensões. Para deixar mais claro, darei um exemplo. Talvez muitos estejam familiarizados com a anotação da Tabela JPA, na qual você pode, entre outras coisas, passar o nome da tabela correspondente a essa classe (entidade). Normalmente, os nomes de tabela e classe são os mesmos, com a única diferença de que className se torna CLASS_NAME. O modelo para criar esta anotação será mais ou menos assim:

 @Table(name = "$TABLE NAME$") 

Em Extensões, selecione capitalizeAndUnderscore (String) , somente em vez de String nós mesmos prescrevemos className:

capitalizeAndUnderscore(className)

Um exemplo:

 @Table(name = "CODE_TEMPLATES") public class CodeTemplates { ... } 

PS:
Você também pode escrever seus próprios valores no campo Extensões, como na entrada, mas não vejo o ponto, porque você pode fazer isso no campo Valor padrão.

4. Também é possível importar modelos ( Arquivo -> Importar configurações ) e exportar ( Arquivo -> Exportar configurações ) e outras configurações na forma de arquivos jar. Como os modelos são exportados como arquivos xml, você pode opcionalmente ir para o diretório .IntelliJIdea $ VERSION $ / config / templates e adicionar seu xml lá. Nesse caso, você precisa especificar um grupo de modelos no arquivo, caso contrário você não os verá na lista. Se você não especificar um grupo, modelos individuais poderão ser adicionados a um dos arquivos existentes, como uma opção - user.xml.
Exemplo user.xml com logger e tabela :
 <templateSet group="user"> <template name="log" value="private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName());" description="Logger Template" toReformat="false" toShortenFQNames="true"> <variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_DECLARATION" value="true" /> </context> </template> <template name="tb" value="@Table(name = "$TABLE_NAME$")" description="" toReformat="false" toShortenFQNames="true"> <variable name="TABLE_NAME" expression="capitalizeAndUnderscore(className)" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_CODE" value="true" /> </context> </template> </templateSet> 


Conclusão


Espero que o artigo de hoje seja útil e ajude a acelerar o desenvolvimento daqueles que ainda não usaram seus modelos.

PS: Se desejar, você pode escrever seus próprios plugins para o IDE, incluindo extensões para modelos.

Correções ou acréscimos são bem-vindos.

Link para a documentação oficial: AQUI
Obrigado, justboris

Source: https://habr.com/ru/post/pt414813/


All Articles