Sie können verschiedene Java-Codevorlagen in Eclipse über erstellen
Fenster> Einstellungen> Java> Editor> Vorlagen
z.B
sysout
wird erweitert auf:
System.out.println(${word_selection}${});${cursor}
Sie können dies aktivieren, indem Sie sysout
gefolgt von eingebenCTRL+SPACE
Welche nützlichen Java-Codevorlagen verwenden Sie derzeit? Geben Sie den Namen und die Beschreibung an und warum es so toll ist.
Ich suche nach einer originellen / neuartigen Verwendung einer Vorlage anstelle einer integrierten Funktion.
- Erstellen Sie den Log4J-Logger
- Holen Sie sich SWT-Farbe vom Display
- Syncexec - Eclipse Framework
- Singleton Pattern / Enum Singleton Generation
- Readfile
- Const
- Traceout
- Zeichenfolge formatieren
- Kommentar Code Überprüfung
- String-Format
- Versuchen Sie schließlich sperren
- Nachrichtenformat i18n und Protokoll
- Equalsbuilder
- Hashcodebuilder
- Spring Object Injection
- Erstellen Sie FileOutputStream
System.out.println(${word_selection}${});${cursor}
bedeutet? Es hört sich so an, als gäbe es eine Möglichkeit, ein Wort auszuwählen und es automatisch in einensysout
Anruf einzuschließen. Stimmt das ? Wie?Antworten:
Die folgenden Codevorlagen erstellen sowohl einen Logger als auch bei Bedarf die richtigen Importe.
SLF4J
Log4J 2
Log4J
Quelle .
JUL
quelle
Einige zusätzliche Vorlagen hier: Link I - Link II
Ich mag dieses:
Readfile
UPDATE : Die Java 7-Version dieser Vorlage lautet:
quelle
StandardCharsets.UTF_8
alsCharset.forName("UTF-8")
.Formatieren Sie eine Zeichenfolge
MessageFormat - Umgibt die Auswahl mit einem MessageFormat.
Auf diese Weise kann ich einen Cursor auf eine Zeichenfolge bewegen, die Auswahl auf die gesamte Zeichenfolge erweitern (Umschalt-Alt-Auf) und dann zweimal Strg-Leertaste.
Sperren Sie die Auswahl
sperren - umgeben Sie die ausgewählten Zeilen mit einem Versuch, die Sperre endgültig zu sperren. Nehmen Sie das Vorhandensein einer Sperrvariablen an.
NB-
${line_selection}
Vorlagen werden im Menü Surround Mit (Alt-Umschalt-Z) angezeigt.quelle
lock
undunlock
.acquire
undrelease
werden für Semaphoren verwendet, und ihre Verwendung innerhalb eines Try-finally-Blocks wird nicht so dringend empfohlen wie bei Sperren .Ich weiß, dass ich einen toten Pfosten kicke, wollte dies aber zur Vervollständigung teilen:
Eine korrekte Version der Singleton-Generierungsvorlage, die das fehlerhafte, doppelt überprüfte Verriegelungsdesign überwindet (siehe oben und an anderer Stelle erwähnt).
Singleton-Erstellungsvorlage: Nennen Sie diese
createsingleton
So greifen Sie auf Singletons zu, die oben generiert wurden:
Singleton-Referenzvorlage: Nennen Sie diese
getsingleton
:quelle
${enclosing_type}
beabsichtigt?${primary_type_name}
Beispiel:public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Fügen Sie ein Code-Snippet hinzu, um es zu wiederholen
Map.entrySet()
:Vorlage:
Generierter Code:
quelle
${}
und stattdessen${cursor}
die "Tab-Iteration" zwischen Feldern aktivieren. Vielen Dank.Für
log
ein hilfreiches kleines Liedchen, das der Mitgliedsvariablen hinzugefügt werden kann.quelle
Erstellen Sie einen Mock mit Mockito (im Kontext "Java-Anweisungen"):
Und in "Java-Typ-Mitglieder":
Verspotten Sie eine void-Methode, um eine Ausnahme auszulösen:
Verspotten Sie eine leere Methode, um etwas zu tun:
Überprüfen Sie die verspottete Methode, die genau einmal aufgerufen wird:
Stellen Sie sicher, dass die verspottete Methode niemals aufgerufen wird:
Neue verknüpfte Liste mit Google Guava (und ähnlichem für Hashset und Hashmap):
Außerdem verwende ich eine riesige Vorlage, die eine Testklasse generiert. Hier ist ein verkürztes Fragment davon, das jeder Interessierte anpassen sollte:
quelle
Null Checks!
quelle
PreConditions.checkNotNull(...)
Methode in Guave ist eine sehr lesbare Alternative (insbesondere bei statischen Importen)Einer meiner Geliebten ist foreach :
Und Traceout , da ich es häufig zum Tracking verwende:
Ich habe gerade an einen anderen gedacht und ihn eines Tages über das Internet gefunden, const :
quelle
traceout
ist bereits in Eclipse als verfügbarsystrace
.Ein kleiner Tipp zu sysout - ich benenne es gerne in "sop" um. Nichts anderes in den Java-Bibliotheken beginnt mit "sop", so dass Sie schnell "sop" eingeben und boomen können.
quelle
Wirf eine IllegalArgumentException mit einer Variablen im aktuellen Bereich (illarg):
Besser
quelle
Nichts Besonderes für die Codeproduktion - aber sehr nützlich für Codeüberprüfungen
Ich habe meine Vorlage coderev niedrig / med / hoch die folgenden tun
Und dann werden in der Aufgabenansicht alle Kommentare zur Codeüberprüfung angezeigt, die ich während eines Meetings aufrufen möchte.
quelle
Einige weitere Vorlagen hier .
Beinhaltet:
quelle
slf4j Protokollierung
quelle
Bean-Eigenschaft
PropertyChangeSupport
quelle
Nach Java 7 können Sie Logger, die statische Verweise auf die einschließende Klasse benötigen (oder bevorzugen), mithilfe der neu eingeführten MethodHandles-API einrichten, um die Laufzeitklasse in einem statischen Kontext abzurufen.
Ein Beispiel-Snippet für SLF4J ist:
Abgesehen davon, dass es sich um ein einfaches Snippet in einer IDE handelt, ist es auch weniger spröde, wenn Sie bestimmte Funktionen in eine andere Klasse umgestalten, da Sie den Klassennamen nicht versehentlich mit sich führen.
quelle
Rufen Sie den Code im GUI-Thread auf
Ich binde die folgende Vorlage an die Verknüpfung,
slater
um schnell Code im GUI-Thread zu versenden.quelle
Beim Testen mit Code habe ich manchmal das Löschen einiger Systeme verpasst . Also habe ich mir eine Vorlage namens syt gemacht .
Bevor ich kompiliere, überprüfe ich immer meine TODOs und vergesse nie wieder, ein System.out zu löschen.
quelle
strf -> String.format("msg", args)
ziemlich einfach, spart aber ein bisschen Tippen.quelle
String.format("${string}",${objects})
weil Eclipse es mir ermöglicht, zwischen meiner Zeichenfolge und meiner Liste von Objekten zu wechseln.String.format(${word_selection}${},)${cursor}
Wählen Sie zuerst einen String aus und verwenden Sie dann 'sf'. Addiere die% s und so weiter ...Holen Sie sich eine SWT-Farbe von der aktuellen Anzeige:
Suround mit Syncexec
Verwenden Sie das Singleton-Entwurfsmuster:
quelle
Und eine Equalsbuilder-, Hashcodebuilder-Anpassung:
quelle
Die Vorlage für die Logger-Deklaration ist großartig.
Ich erstelle auch linfo, ldebug, lwarn, lerror für die Protokollstufen, die ich häufiger verwende.
Fehler:
quelle
Erstellen Sie alles für eine Veranstaltung
Da das Erstellen von Ereignissen in Java schwierig ist - all diese Schnittstellen, Methoden und Dinge, die nur für ein Ereignis geschrieben werden müssen -, habe ich eine einfache Vorlage erstellt, um alles zu erstellen, was für ein Ereignis benötigt wird.
Wenn Sie Ereignisse haben, die eine einzelne gemeinsam nutzen
EventObject
, löschen Sie einfach die von der Vorlage eingefügte benutzerdefinierte und ändern Sie die entsprechenden Teile vonraise___()
undon____()
.Ich hatte einen netten, kleinen, eleganten Eventing-Mechanismus mit einer generischen Schnittstelle und einer generischen Klasse geschrieben, aber er würde aufgrund der Art und Weise, wie Java mit Generika umgeht, nicht funktionieren. = (
Bearbeiten : 1) Ich bin auf das Problem gestoßen, bei dem Threads Listener hinzufügten / entfernten, während ein Ereignis stattfand. Das
List
kann während der Verwendung nicht geändert werden, daher habe ichsynchronized
Blöcke hinzugefügt , in denen auf die Liste der Listener zugegriffen oder diese verwendet werden, und die Liste selbst gesperrt.quelle
Fügen Sie Testmethoden ein, die wann gegeben sein sollten
Ich habe kürzlich eine ähnliche Version wie diese gesehen, als ich mit einem sehr guten Entwickler und Freund programmiert habe, und ich denke, es könnte eine schöne Ergänzung zu dieser Liste sein.
Diese Vorlage erstellt eine neue Testmethode für eine Klasse, die dem Ansatz "Gegeben - Wann - Dann" aus dem BDD-Paradigma ( Behaviour-Driven Development ) in den Kommentaren als Leitfaden für die Strukturierung des Codes folgt . Der Methodenname wird mit "sollte" gestartet, und Sie können den Rest des Dummy-Methodennamens "CheckThisAndThat" durch die bestmögliche Beschreibung der Verantwortlichkeit der Testmethode ersetzen. Nachdem Sie den Namen eingegeben haben, führt Sie TAB direkt zu
// Given section
, damit Sie mit der Eingabe Ihrer Voraussetzungen beginnen können.Ich habe es den drei Buchstaben "tst" zugeordnet, mit der Beschreibung "Testmethoden sollten-wann-dann gegeben werden";)
Ich hoffe, Sie finden es genauso nützlich wie ich, als ich es gesehen habe:
quelle
Federeinspritzung
Ich weiß, dass dies etwas spät im Spiel ist, aber hier ist eine, die ich für Spring Injection in einer Klasse verwende:
quelle
Hier ist ein Konstruktor für nicht instanziierbare Klassen:
Dieser ist für benutzerdefinierte Ausnahmen:
quelle
Ich mag einen generierten Klassenkommentar wie folgt:
Das "Ich ..." ermutigt den Entwickler sofort, zu beschreiben, was die Klasse tut. Ich scheine das Problem des undokumentierten Unterrichts zu verbessern.
Und natürlich ist $ Id $ ein nützliches CVS-Schlüsselwort.
quelle
Ich habe diese Snippets häufig verwendet und nach
null
Werten und leeren Zeichenfolgen gesucht .Ich verwende die "Argumenttest" -Vorlagen als ersten Code in meinen Methoden, um empfangene Argumente zu überprüfen.
testNullArgument
Möglicherweise möchten Sie die Ausnahmemeldung an den Standard Ihres Unternehmens oder Projekts anpassen. Ich empfehle jedoch eine Nachricht, die den Namen des betreffenden Arguments enthält. Andernfalls muss der Aufrufer Ihrer Methode im Code nachsehen, um zu verstehen, was schief gelaufen ist. (Eine
NullPointerException
Nachricht ohne Nachricht erzeugt eine Ausnahme mit der ziemlich unsinnigen Nachricht "null").testNullOrEmptyStringArgument
Sie können die Nullprüfungsvorlage auch von oben wiederverwenden und dieses Snippet implementieren, um nur nach leeren Zeichenfolgen zu suchen. Sie würden dann diese beiden Vorlagen verwenden, um den obigen Code zu erzeugen.
Die obige Vorlage hat jedoch das Problem, dass Sie, wenn das in-Argument endgültig ist, den erzeugten Code etwas ändern müssen (das
${varName} = ${varName}.trim()
wird fehlschlagen).Wenn Sie viele endgültige Argumente verwenden und nach leeren Zeichenfolgen suchen möchten, diese aber nicht als Teil Ihres Codes kürzen müssen, können Sie stattdessen Folgendes tun:
testNullFieldState
Ich habe auch einige Snippets zum Überprüfen von Variablen erstellt, die nicht als Argumente gesendet werden (der große Unterschied ist der Ausnahmetyp, der jetzt ein ist
IllegalStateException
).testNullOrEmptyStringFieldState
testArgument
Dies ist eine allgemeine Vorlage zum Testen einer Variablen. Ich habe ein paar Jahre gebraucht, um wirklich zu lernen, dieses zu schätzen, jetzt benutze ich es oft (natürlich in Kombination mit den oben genannten Vorlagen!)
Sie geben einen Variablennamen oder eine Bedingung ein, die einen Wert zurückgibt, gefolgt von einem Operanden ("==", "<", ">" usw.) und einem anderen Wert oder einer anderen Variablen. Wenn der Test fehlschlägt, löst der resultierende Code eine IllegalArgumentException aus.
Der Grund für die etwas komplizierte if-Klausel mit dem gesamten Ausdruck in einem "! ()" Ist, dass die Testbedingung in der Ausnahmemeldung wiederverwendet werden kann.
Vielleicht verwirrt es einen Kollegen, aber nur, wenn er sich den Code ansehen muss, was er möglicherweise nicht tun muss, wenn Sie solche Ausnahmen auslösen ...
Hier ist ein Beispiel mit Arrays:
Sie erhalten dieses Ergebnis, indem Sie die Vorlage aufrufen und "from.length" [TAB] "== to.length" eingeben.
Das Ergebnis ist viel lustiger als eine "ArrayIndexOutOfBoundsException" oder ähnliches und gibt Ihren Benutzern möglicherweise die Möglichkeit, das Problem herauszufinden.
Genießen!
quelle
Ich benutze dies für MessageFormat (mit Java 1.4). Auf diese Weise bin ich sicher, dass ich keine Verkettungen habe, die bei der Internationalisierung schwer zu extrahieren sind
i18n
Auch zur Protokollierung:
Log
quelle
Meine wenigen Favoriten sind ...
1: Javadoc, um ein Dokument über die Methode einzufügen, bei der es sich um eine Spring-Objektinjektionsmethode handelt.
2: Debug-Fenster, um einen FileOutputStream zu erstellen und den Inhalt des Puffers in eine Datei zu schreiben. Wird verwendet, wenn Sie einen Puffer mit einem früheren Lauf vergleichen möchten (mithilfe von BeyondCompare) oder wenn Sie den Inhalt eines Puffers nicht anzeigen können (über inspect), weil er zu groß ist ...
quelle