Vous pouvez créer divers modèles de code Java dans Eclipse via
Fenêtre> Préférences> Java> Éditeur> Modèles
par exemple
sysout
est étendu à:
System.out.println(${word_selection}${});${cursor}
Vous pouvez l'activer en tapant sysout
suivi deCTRL+SPACE
Quels modèles de code Java utiles utilisez-vous actuellement? Incluez le nom et la description de celui-ci et pourquoi il est génial.
Je recherche une utilisation originale / nouvelle d'un modèle plutôt qu'une fonctionnalité existante intégrée.
- Créer un enregistreur Log4J
- Obtenez la couleur swt de l'affichage
- Syncexec - Eclipse Framework
- Modèle de singleton / Génération de singleton enum
- Readfile
- Const
- Tracer
- Format de chaîne
- Examen du code de commentaire
- Format de chaîne
- Essayez enfin de verrouiller
- Format du message i18n et journal
- Equalsbuilder
- Hashcodebuilder
- Injection d'objets de printemps
- Créer FileOutputStream
System.out.println(${word_selection}${});${cursor}
signifie? Il semble qu'il existe un moyen de sélectionner un mot et de l'enfermer automatiquement dans unsysout
appel, ai-je raison? Comment?Réponses:
Les modèles de code suivants créeront un enregistreur et créeront les importations appropriées, si nécessaire.
SLF4J
Log4J 2
Log4J
Source .
JUIL
la source
Quelques modèles supplémentaires ici: Lien I - Lien II
J'aime celui la:
readfile
MISE À JOUR : La version Java 7 de ce modèle est:
la source
StandardCharsets.UTF_8
plutôtCharset.forName("UTF-8")
.Formater une chaîne
MessageFormat - entourez la sélection d'un MessageFormat.
Cela me permet de déplacer un curseur sur une chaîne, d'étendre la sélection à toute la chaîne (Maj-Alt-Haut), puis Ctrl-Espace deux fois.
Verrouiller la sélection
lock - entourez les lignes sélectionnées d'un essai de verrouillage final. Supposons la présence d'une variable de verrouillage.
Les
${line_selection}
modèles NB apparaissent dans le menu Surround With (Alt-Shift-Z).la source
lock
etunlock
.acquire
etrelease
sont utilisés pour les sémaphores et leur utilisation dans un bloc try-finally n'est pas aussi fortement conseillée qu'avec les verrous .Je sais que je donne un coup de pied à un poste mort, mais je voulais le partager pour terminer:
Une version correcte du modèle de génération singleton, qui surmonte la conception de verrouillage défectueuse à double vérification (discutée ci-dessus et mentionnée ailleurs où)
Modèle de création de singleton: nommez-le
createsingleton
Pour accéder aux singletons générés en utilisant ci-dessus:
Modèle de référence Singleton: Nommez ceci
getsingleton
:la source
${enclosing_type}
prévu?${primary_type_name}
exemple d' utilisation d'énumération :public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Ajoutez un extrait de code pour parcourir
Map.entrySet()
:Modèle:
Code généré:
la source
${}
et que, au lieu de${cursor}
, permet une "itération de tabulation" entre les champs. Merci.Pour
log
, une petite chanson utile à ajouter dans la variable membre.la source
Créez une maquette avec Mockito (dans le contexte "Java déclarations"):
Et dans "Membres de type Java":
Mock une méthode void pour lever une exception:
Se moquer d'une méthode void pour faire quelque chose:
Vérifiez la méthode simulée appelée exactement une fois:
Vérifiez que la méthode simulée n'est jamais invoquée:
Nouvelle liste de liens utilisant Google Guava (et similaire pour hashset et hashmap):
J'utilise également un énorme modèle qui génère une classe de test. En voici un fragment abrégé que toutes les personnes intéressées devraient personnaliser:
la source
Contrôles nuls!
la source
PreConditions.checkNotNull(...)
méthode à Guava est une alternative très lisible (en particulier avec les importations statiques)Un de mes bien-aimés est foreach :
Et traceout , puisque je l'utilise beaucoup pour le suivi:
J'ai juste pensé à un autre et je l'ai trouvé un jour sur Internet, const :
la source
traceout
est déjà disponible dans Eclipse en tant quesystrace
.Un petit conseil sur sysout - j'aime le renommer "sop". Rien d'autre dans les bibliothèques java ne commence par "sop", vous pouvez donc taper rapidement "sop" et boom, insère-t-il.
la source
Lancez une exception IllegalArgumentException avec une variable dans la portée actuelle (illarg):
Meilleur
la source
Rien d'extraordinaire pour la production de code - mais très utile pour les revues de code
J'ai mon modèle coderev low / med / high faire ce qui suit
Et puis, dans la vue Tâches - me montrera tous les commentaires de révision de code que je veux faire apparaître lors d'une réunion.
la source
Quelques modèles supplémentaires ici .
Comprend:
la source
slf4j Logging
la source
Propriété Bean
PropertyChangeSupport
la source
Après Java 7, un excellent moyen de configurer des enregistreurs qui ont besoin (ou préfèrent) des références statiques à la classe englobante consiste à utiliser l'API MethodHandles nouvellement introduite pour obtenir la classe d'exécution dans un contexte statique.
Un exemple d'extrait pour SLF4J est:
En plus d'être un simple extrait dans n'importe quel IDE, il est également moins fragile si vous refactorisez certaines fonctionnalités dans une autre classe car vous ne porterez pas accidentellement le nom de la classe avec lui.
la source
Appeler du code sur le thread GUI
Je lie le modèle suivant au raccourci
slater
pour envoyer rapidement du code sur le thread GUI.la source
Lors de tests avec du code, j'ai parfois manqué de supprimer certains syso . Je me suis donc fait un modèle appelé syt .
Avant de compiler, je vérifie toujours mes TODO et n'oublierai jamais de supprimer un System.out à nouveau.
la source
strf -> String.format("msg", args)
assez simple mais économise un peu de frappe.la source
String.format("${string}",${objects})
car Eclipse me permet de tabuler entre ma chaîne et ma liste d'objets.String.format(${word_selection}${},)${cursor}
:, sélectionnez d'abord une chaîne puis utilisez 'sf' dessus. Ajoutez le% s et ainsi de suite ...Obtenez une couleur SWT à partir de l'affichage actuel:
Suround avec syncexec
Utilisez le modèle de conception singleton:
la source
Et une adaptation equalsbuilder, hashcodebuilder:
la source
Le modèle de déclaration de l'enregistreur est excellent.
Je crée également linfo, ldebug, lwarn, lerror pour les niveaux de journalisation que j'utilise le plus souvent.
lerror:
la source
Créez tout pour un événement
Étant donné que les événements sont un peu pénibles à créer en Java - toutes ces interfaces, méthodes et autres choses à écrire juste pour 1 événement - j'ai créé un modèle simple pour créer tout le nécessaire pour 1 événement.
Si vous avez des événements qui partagent un seul
EventObject
, supprimez simplement celui personnalisé inséré par le modèle et modifiez les parties appropriées deraise___()
eton____()
.J'avais écrit un mécanisme d'événement agréable, petit et élégant à l'aide d'une interface générique et d'une classe générique, mais cela ne fonctionnerait pas en raison de la façon dont Java gère les génériques. = (
Edit : 1) Je suis tombé sur le problème où les threads ajoutaient / supprimaient des écouteurs pendant qu'un événement se déroulait. Le
List
ne peut pas être modifié en cours d'utilisation, j'ai donc ajouté dessynchronized
blocs où la liste des écouteurs est accédée ou utilisée, se verrouillant sur la liste elle-même.la source
Insérez les méthodes de test devraient-être-données-quand-alors
J'ai vu une version similaire à celle-ci récemment lors de la programmation en binôme avec un très bon développeur et ami, et je pense que cela pourrait être un bon ajout à cette liste.
Ce modèle créera une nouvelle méthode de test sur une classe, en suivant l' approche Donné - Quand - Alors du paradigme de développement conduit par le comportement (BDD) sur les commentaires, comme guide pour structurer le code. Il démarrera le nom de la méthode par "devrait" et vous permettra de remplacer le reste du nom de la méthode factice "CheckThisAndThat" par la meilleure description possible de la responsabilité de la méthode de test. Après avoir rempli le nom, TAB vous amènera directement à la
// Given section
, afin que vous puissiez commencer à taper vos conditions préalables.Je l'ai mappé aux trois lettres "tst", avec la description "Les méthodes de test devraient être données quand-alors";)
J'espère que vous le trouverez aussi utile que je l'ai fait quand je l'ai vu:
la source
Injection de ressort
Je sais que c'est un peu tard dans le jeu, mais voici celui que j'utilise pour Spring Injection dans une classe:
la source
Voici un constructeur pour les classes non instanciables:
Celui-ci est pour les exceptions personnalisées:
la source
J'aime un commentaire de classe généré comme celui-ci:
Le "je ..." encourage immédiatement le développeur à décrire ce que fait la classe. Il semble que j'améliore le problème des classes non documentées.
Et bien sûr, le $ Id $ est un mot-clé CVS utile.
la source
J'ai beaucoup utilisé ces extraits, recherchant des
null
valeurs et des chaînes vides.J'utilise les modèles "test d'argument" comme premier code dans mes méthodes pour vérifier les arguments reçus.
testNullArgument
Vous souhaiterez peut-être modifier le message d'exception pour l'adapter aux normes de votre entreprise ou de votre projet. Cependant, je recommande d'avoir un message qui inclut le nom de l'argument incriminé. Sinon, l'appelant de votre méthode devra chercher dans le code pour comprendre ce qui s'est mal passé. (Un
NullPointerException
sans message produit une exception avec le message assez insensé "null").testNullOrEmptyStringArgument
Vous pouvez également réutiliser le modèle de vérification null ci-dessus et implémenter cet extrait de code pour vérifier uniquement les chaînes vides. Vous utiliseriez ensuite ces deux modèles pour produire le code ci-dessus.
Le modèle ci-dessus, cependant, a le problème que si l'argument in est final, vous devrez modifier le code produit (le
${varName} = ${varName}.trim()
échouera).Si vous utilisez beaucoup d'arguments finaux et que vous souhaitez vérifier les chaînes vides mais que vous n'avez pas à les supprimer dans le cadre de votre code, vous pouvez utiliser ceci à la place:
testNullFieldState
J'ai également créé des extraits de code pour vérifier les variables qui ne sont pas envoyées comme arguments (la grande différence est le type d'exception, qui est maintenant un à la
IllegalStateException
place).testNullOrEmptyStringFieldState
testArgument
Il s'agit d'un modèle général pour tester une variable. Il m'a fallu quelques années pour vraiment apprendre à apprécier celui-ci, maintenant je l'utilise beaucoup (en combinaison avec les modèles ci-dessus bien sûr!)
Vous entrez un nom de variable ou une condition qui renvoie une valeur, suivie d'un opérande ("==", "<", ">" etc.) et d'une autre valeur ou variable et si le test échoue, le code résultant lèvera une exception IllegalArgumentException.
La raison de la clause if légèrement compliquée, avec l'expression entière entourée d'un "! ()" Est de permettre de réutiliser la condition de test dans le message d'exception.
Peut-être que cela déroutera un collègue, mais seulement s'il doit consulter le code, ce qu'il pourrait ne pas avoir à faire si vous jetez ce genre d'exceptions ...
Voici un exemple avec des tableaux:
Vous obtenez ce résultat en appelant le modèle, en tapant "from.length" [TAB] "== to.length".
Le résultat est beaucoup plus drôle qu'une "ArrayIndexOutOfBoundsException" ou similaire et peut réellement donner à vos utilisateurs une chance de comprendre le problème.
Prendre plaisir!
la source
J'utilise ceci pour MessageFormat (en utilisant Java 1.4). De cette façon, je suis sûr que je n'ai pas de concaténations difficiles à extraire lors de l'internationalisation
i18n
Aussi pour la journalisation:
Journal
la source
Mes préférés sont ...
1: Javadoc, pour insérer un document sur la méthode étant une méthode d'injection d'objets Spring.
2: Fenêtre de débogage, pour créer un FileOutputStream et écrire le contenu du tampon dans un fichier. Utilisé lorsque vous souhaitez comparer un tampon avec une exécution antérieure (à l'aide de BeyondCompare), ou si vous ne pouvez pas afficher le contenu d'un tampon (via inspecter) car il est trop volumineux ...
la source