Création de modèles dans l'IDE Jetbrains

Entrée


Aujourd'hui, je veux donner un petit aperçu-tutoriel des modèles dans le WBS de Jetbrains. Les exemples ci-dessous seront implémentés en Java dans Intellij IDEA, mais le mécanisme de création est le même pour les autres langages et produits de l'entreprise. Je pense que tous les programmeurs de cet IDE ont utilisé les modèles intégrés. Par exemple, lorsque vous écrivez fori, appuyez sur TAB ou ENTRÉE et vous obtenez une boucle for dans laquelle vous devez spécifier le nom et la condition de la variable, et le reste du code est généré pour vous.

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

Ou sout -> System.out.println (), familier à tous les programmeurs java. Ainsi, Intellij prend en charge la création de ses propres modèles de code. Étonnamment, je n'ai trouvé presque aucune information en russe et pas mal d'anglais (car il y a une bonne documentation ) quand je suis tombé sur cette fonctionnalité, bien qu'elle accélère considérablement et aide au développement. Et maintenant, quand ils se sont déplacés, j'ai décidé d'écrire un court article à ce sujet. Peut-être que cela aidera les programmeurs peu expérimentés, ils pourront eux-mêmes tout comprendre ou l'utilisent depuis longtemps, mais je pense que cela convient tout à fait aux autres. Commençons donc.

Créer un modèle


Pour commencer, faisons un exemple simple, par exemple, la constante de l'enregistreur. Accédez à Paramètres -> Éditeur -> Modèles dynamiques . Ici, vous pouvez afficher des groupes de modèles prêts à l'emploi et créer les vôtres - en cliquant sur le signe plus dans la partie droite du panneau. Vous pouvez également créer un modèle distinct, puis il sera ajouté au groupe d'utilisateurs. Après avoir cliqué, une fenêtre apparaîtra ci-dessous, dans laquelle vous devez saisir l'abréviation, les descriptions et le texte réel du modèle. Il y aura également une inscription d'avertissement " Pas de contexte applicable " et le bouton Définir à côté, en cliquant sur lequel nous verrons une liste de contextes possibles - HTML, XML, Java, Javascript, CSS, etc. Certains ont des sous-éléments, par exemple, en Java, c'est la possibilité d'utiliser le modèle dans une méthode, dans un commentaire, au niveau de la classe, ailleurs ou partout à la fois. Prenons l'exemple de l'ensemble du package Java.

Nous allons écrire log comme abréviation, voici une ligne comme celle-ci comme test:

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

Ensuite, cliquez sur le bouton à droite - Modifier les variables . Dans la fenêtre qui s'ouvre, nous voyons une table avec un enregistrement - CLASS_NAME, qui correspond à la variable que nous avons spécifiée dans le texte du fichier comme nom de classe. Il contient les champs Expression , Valeur par défaut , Ignorer si défini . Le premier champ est une sélection dans laquelle on nous propose toutes sortes de valeurs qui peuvent être substituées. La seconde est juste une ligne dans laquelle nous pouvons écrire n'importe quoi en la citant. Eh bien, le troisième champ nous propose de sauter la modification de la variable si elle est spécifiée dans l'une des premières propriétés. Dans notre cas, nous avons besoin de la valeur de la classe className () sélectionnée dans le champ Expression . Si vous le souhaitez, vous pouvez sélectionner la passe d'édition. Cliquez sur OK , après Appliquer et vous pouvez vérifier. Nous créons une classe avec n'importe quel nom, écrivons dans le journal, appuyez sur TAB et le tour est joué - nous avons un enregistreur qui au lieu de CLASS_NAME a le nom de la classe actuelle.

Un exemple:

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

Caractéristiques et caractéristiques:


1. Lors de la création de modèles, une variable clé $ END $ indique où sera le curseur lorsque vous créez le modèle (par défaut, à la fin du code du modèle).

 System.out.println($END$); 

2. La deuxième variable clé est $ SELECTION $ . S'il est présent dans votre modèle, il apparaîtra dans le menu Surround With ( Ctrl + Alt + T ). Cela est nécessaire si vous souhaitez encapsuler votre code.

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

Disons que vous avez un mot ou une phrase, par exemple TEST - vous placez le curseur à la fin du mot, appuyez sur Ctrl + Alt + T et parmi les modèles, vous pouvez choisir le vôtre, puis il s'avère:

 System.out.println("TEST"); 

PS: pour un bloc de code ou de texte, sélectionnez-le d'abord.

3. Certaines extensions dans Extensions peuvent prendre différents types de valeurs comme arguments, y compris d'autres extensions. Pour être plus clair, je vais donner un exemple. Beaucoup connaissent peut-être l'annotation JPA Table , dans laquelle vous pouvez, entre autres, transmettre le nom de la table correspondant à cette classe (entité). Habituellement, les noms de table et de classe sont identiques, à la seule différence que className devient CLASS_NAME. Le modèle de création de cette annotation ressemblera à ceci:

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

Dans Extensions, sélectionnez capitalizeAndUnderscore (String) , uniquement au lieu de String, nous prescrivons nous-mêmes className:

capitalizeAndUnderscore(className)

Un exemple:

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

PS:
Vous pouvez également écrire vos propres valeurs dans le champ Extensions sélectionnez, comme dans l'entrée, mais je ne vois pas le point, car vous pouvez le faire dans le champ Valeur par défaut.

4. Il est également possible d'importer ( Fichier -> Paramètres d'importation ) et d'exporter ( Fichier -> Paramètres d'exportation ) et d'autres paramètres sous forme de fichiers jar. Étant donné que les modèles sont exportés en tant que fichiers xml, vous pouvez éventuellement accéder au répertoire .IntelliJIdea $ VERSION $ / config / templates et y ajouter votre xml. Dans ce cas, vous devez spécifier un groupe de modèles dans le fichier, sinon vous ne les verrez pas dans la liste. Si vous ne spécifiez pas de groupe, des modèles individuels peuvent être ajoutés à l'un des fichiers existants, en option - user.xml.
Exemple user.xml avec enregistreur et table :
 <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> 


Conclusion


J'espère que l'article d'aujourd'hui sera utile et aidera à accélérer le développement de ceux qui n'ont pas encore utilisé leurs modèles.

PS: Si vous le souhaitez, vous pouvez écrire vos propres plugins pour l'IDE, y compris les extensions pour les modèles.

Les corrections ou ajouts sont les bienvenus.

Lien vers la documentation officielle: ICI
Merci, justboris

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


All Articles