Eine Programmiersprache ist einer gesprochenen Sprache sehr ähnlich. Der einzige Unterschied besteht darin, dass es sich um eine spezielle Sprache handelt, deren Hauptzweck darin besteht, die Kommunikation mit einem Computer zu erleichtern, um dem Computer zu erklären, was wir von ihm erwarten. Aber mit einem Computer kann man kein persönliches Gespräch führen. Als Sie mit dem Erlernen einer Programmiersprache begonnen haben, haben Sie sich Bücher oder Bildungsressourcen wie CodeGym angesehen. Und diese Ressource hat Ihnen Code gezeigt, den der Computer versteht. Aber auch Sie sollten es verstehen, wenn Sie etwas über die Java-Sprache lernen. Wie bei jeder Sprache wurden auch bei der Programmierung einige Formatierungskonventionen übernommen. In einer höflichen Gesellschaft würde es beispielsweise als schlechtes Benehmen gelten, so zu schreiben . Und wenn in Java der Name einer Methode mit einem Großbuchstaben beginnt, stellt dies einen groben Verstoß gegen die Codierungskonventionen dar.
Die Regeln für Java-Code sind im Dokument Code Conventions for the Java Programming Language aufgeführt . Codierungskonventionen können auch kleinere Details regeln, beispielsweise die Einrückung. Stellen Sie sich den absoluten Albtraum vor, zu dem die Versionskontrolle führen würde, wenn die Einrückung inkonsistent wäre und einige Leute Tabulatoren und andere Leerzeichen verwenden würden. Wie wäre es für jemanden, der einen Fix mit nur einer Methode einchecken muss, aber feststellt, dass sich die gesamte Datei aufgrund von Unterschieden bei Leerzeichen und Tabulatoren geändert hat? Natürlich können sich die Konventionen wie bei der gewöhnlichen Sprache je nachdem, wo eine Sprache verwendet wird, ändern. In den Weiten des Webs finden Sie beispielsweise den Google Java Style Guide und den Twitter Java Style Guide. Für diesen Test benötigen wir eine Testperson. Wir werden das Gradle-Build-Automatisierungssystem verwenden. Damit können wir schnell loslegen, indem wir ein neues Projekt aus einer Vorlage erstellen. Gradle hat ein tolles Plugin: Build Init Plugin . Gehen wir in ein neues Verzeichnis und führen dort den folgenden Befehl aus:
Der Screenshot zeigt, dass wir „Verkettete Methodenaufrufe“ auf „immer umbrechen“ setzen können, also verkettete Methodenaufrufe immer in separate Zeilen aufteilen. Klicken Sie nun in der Testklasse erneut auf die Formatierungsschaltfläche und wir sehen, dass es wirklich funktioniert! Aber manchmal müssen Sie Code außerhalb der Standardformatierungsregeln formatieren. Richten Sie die Formatierung wie folgt ein:
Um eine Formatierung zu verhindern, aktivieren Sie im Abschnitt „Codestil“ die Formatierungsmarkierungen:
Jetzt können wir unsere Testklasse so ändern, dass ihr Code nicht neu formatiert wird:
Wie Sie sehen, gibt es dort viele Einstellungen. Weitere Details zu den
Dann können wir die Einstellungen importieren oder exportieren:
Eine andere Möglichkeit besteht darin, IDEA-Einstellungen zu importieren:
Eine dritte Option ist das Settings Repository. Weitere Informationen zur Verwendung des Einstellungs-Repository finden Sie in der IntelliJ IDEA-Hilfedokumentation unter dem folgenden Link: Einstellungs-Repository . Apropos Durchsetzung eines einheitlichen Stils in einem Team: Ich kann auch nicht umhin, die gute Unterstützung für Stile aus Eclipse zu erwähnen IDE. Dazu müssen Sie ein separates Plugin installieren: Öffnen Sie die IDEA-Einstellungen über Datei -> Einstellungen (Strg+Alt+S) und gehen Sie zum Abschnitt „Plugins“. Um neue Plugins zu finden, klicken Sie auf die Schaltfläche „ “.
Nach der Installation müssen Sie IDEA neu starten – das ist die Standardprozedur. Jetzt ist alles erledigt. Es gibt einen neuen Abschnitt in den IDEA-Einstellungen: „Eclipse Code Formatter“.. Es wird ungefähr so aussehen:
Darüber hinaus enthält die Spalte „
Und den Inhalt für Folgendes angeben
Danach können wir den Kommentar über der App-Klasse in ein JavaDoc umwandeln und sehen, dass der Fehler in einem neuen Build behoben ist.

gradle init --type java-application
Starten Sie anschließend IntelliJ IDEA. Wenn Sie ein Fenster mit einem geöffneten Projekt sehen (d. h. Sie sehen den Code-Editor und den Projektbaum), schließen Sie dieses Projekt mit File -> Close Project
. Führen Sie nun im Willkommensfenster „ Import Project
“ aus und importieren Sie unser neues Projekt. Aktivieren Sie beim Importieren das Use autoimport
Kontrollkästchen „ “. Lassen Sie uns herausfinden, ob wir modernste Entwicklungstools nutzen können, um das Leben irgendwie zu vereinfachen.
Codeformatierung in IDEA
Drücken Sie nach dem Importieren des Projekts Strg+N und gehen Sie zurAppTest
Klasse. Dies ist die Standardtestklasse. Es sieht aus wie das:
import org.junit.Test;
import static org.junit.Assert.*;
public class AppTest {
@Test public void testAppHasAGreeting() {
App classUnderTest = new App();
assertNotNull("app should have a greeting", classUnderTest.getGreeting());
}
}
Was fällt Ihnen sofort ins Auge? Eine Anmerkung in derselben Zeile wie eine Methodendeklaration, die hässlich aussieht, oder? Wie kann man das beheben? IntelliJ IDEA verfügt über einen Code
Menüeintrag „ “ für verschiedene Codemanipulationen. Eine solche Manipulation ist „ Reformat Code
“, die Sie mit Strg+L anwenden können. Danach befindet sich die Anmerkung in einer Zeile und die Methodendeklaration in einer anderen. Es ist sofort erwähnenswert, dass dieser Vorgang für den aktuell ausgewählten Code ausgeführt wird . Wenn keine Auswahl vorhanden ist, wird der Formatierungsvorgang für alles durchgeführt. Fügen wir nun eine neue Testmethode hinzu:
@Test
public void testSumOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
assertThat(result, is(12));
}
Und zwei Importe:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Wie Sie sehen können, erfolgt die Operation für den Stream in einer Zeile. Was aber, wenn wir sicherstellen wollen, dass die verketteten Methodenaufrufe bei jedem Periodenoperator immer in neue Zeilen aufgeteilt werden? Wir könnten dies manuell tun. Aber denken Sie daran, dass wir möchten, dass alles automatisch geschieht. In der Tat werden wir den manuellen Schritt sicherlich von Zeit zu Zeit vergessen und dann überall unterschiedliche Formatierungen haben, und das ist nicht gut. Daher müssen wir die Regel bearbeiten, die IDEA zur Formatierung verwendet. WählenFile -> Settings
im IDEA-Menü (oder drücken Sie Strg+Alt+S). Geben Sie im Suchfeld im Einstellungsfenster „Codestil“ ein. Im Abschnitt „Codestil“ können Sie Einstellungen für weitere Sprachen als nur Java festlegen. Aber Java ist das, was uns im Moment interessiert. Wie Sie sehen, sind die Einstellungen in mehrere Registerkarten unterteilt. Eine super nützliche Funktion ist, dass im rechten Teil des Fensters ein Beispiel für die Operation angezeigt wird: 


@Test
public void testSumOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
// @formatter:off
Integer result = data.stream().filter(number -> number % 2 == 0)
.reduce((n1, n2) -> n1 + n2)
.get();
assertThat(result, is(12));
// @formatter:on
}
Möglicherweise ist Ihnen aufgefallen, dass IDEA das Drücken der Tabulatortaste als Leerzeichen interpretiert (dies ist das Standardverhalten). Sie können dies aber im Code Style
Bereich „ “ ändern: 
Code style
Einstellungen können Sie hier lesen: „ IDEA-Hilfe: Codestil “. Es gibt noch eine weitere wichtige Formatierungsfunktion: Formatierung von Importen. Dieser Vorgang wird separat ausgeführt und heißt „ Optimize Imports
“. Es befindet sich unter Code -> Optimize Imports
(Strg+Alt+O). Durch die Optimierung von Importen werden unnötige Importe entfernt und Importe in der richtigen Reihenfolge entsprechend den Einstellungen auf der Imports
Registerkarte „ “ der „ Code Style
“-Einstellungen für Java angeordnet. Wenn Sie möchten, dass diese Formatierung automatisch erfolgt, gibt es außerdem gute Neuigkeiten:Plugin „Aktionen speichern“ .
Verteilen von Einstellungen in einem Befehl
Wir haben oben gesehen, dass Sie Ihren Formatierungsstil nach Ihren Wünschen anpassen können. Doch wie nutzt man diesen Stil im Team? Ganz einfach. Es gibt mehrere Möglichkeiten. Am einfachsten ist es, ein Codestilschema zu speichern. Öffnen Sie die IDEA-Einstellungen mitFile -> Settings
(oder drücken Sie Strg+Alt+S). Im Code Style
Abschnitt „ “ sehen wir „Schema“. Dies ist unser Formatierungsschema. Standardmäßig wird das „Default“-Schema verwendet und mit „IDE“ gekennzeichnet, was bedeutet, dass diese Einstellung nur für unsere IDE gilt – sie hat keine Auswirkungen auf andere. Um ein „benutzerdefiniertes“ Schema zu erstellen, verwenden Sie die Schaltfläche rechts, um eine Kopie zu erstellen und ihr einen Namen zu geben, zum Beispiel: CodeGym. 


Browse Repositories
Dann Finden Sie das Eclipse Code Formatter-Plugin im Suchfenster. 

Strengere Anforderungen
Zusätzlich zu den IDEA-Tools können Sie auch Build-Automatisierungs-Plugins verwenden, um die Anforderungen zu verschärfen. Es gibt keine Möglichkeit, manuell zu überprüfen, ob jemand die richtige Formatierung verwendet hat. Vielleicht könnten Sie es mit 5 Leuten in einem Team schaffen. Aber bei 100 Leuten in einem Unternehmen ist das nicht realistisch. Und selbst fünf werden schwer zu verfolgen sein. Und warum sollten Sie Ihre Zeit damit verschwenden? Es wäre viel einfacher, die Realisierung des Projekts zu verhindern, wenn gegen die Regeln verstoßen wird. Tatsächlich handelt es sich hierbei um ein ganz separates Thema namens „Inspect Code“. In diesem Artikel möchte ich Ihnen nur zeigen, wie es funktioniert. Eines der beliebtesten Gradle-Plugins (weil es, wie Sie sich erinnern, unser Projekt aufbaut) ist pmd. Um es zu aktivieren, gehen Sie einfach zum Build-Skript unseres Gradle-Projekts (der Datei build.gradle im Stammverzeichnis unseres Projekts) und fügen Sie dort neben den restlichen Plugins pmd hinzu:
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Check source code
id 'pmd'
// Apply the application plugin to add support for building an application
id 'application'
}
Nun können wir an gleicher Stelle detailliertere Einstellungen vornehmen:
pmd {
ignoreFailures = false
pmdTest.enabled = true
ruleSets = [
'java-basic',
'java-braces',
'java-clone',
'java-codesize',
'java-comments',
'java-controversial',
'java-coupling',
'java-design',
'java-empty',
'java-finalizers',
'java-imports',
'java-optimizations',
'java-strictexception',
'java-strings',
'java-typeresolution',
'java-unnecessary',
'java-unusedcode'
]
}
Sogar unser Projekt ist jetzt kaputt. Führen Sie es aus gradle build
und wir erhalten eine Fehlermeldung. Das Schöne ist, dass während des Builds ein Bericht erstellt wird. Und wenn es Fehler gibt, erhalten wir eine Meldung wie diese:
BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
Wenn wir den Bericht aufrufen, sehen wir etwa Folgendes: 
Problem
“ einen Link zu einer Beschreibung des Problems auf der Website des PMD-Plugins. Für den headerCommentRequirement Required
Fehler „ “ lautet der Link beispielsweise hier: pmd – CommentRequired . Dieser Fehler ist ein Hinweis darauf, dass unsere Klasse kein JavaDoc hat. Wir können Vorlagen verwenden, um ein JavaDoc über den Klassen zu konfigurieren: 
File Header
: 
Das Endergebnis
Der Codestil ist wichtig, um die Produktivität eines Projekts zu maximieren. Schöner Code, der nach gemeinsamen Regeln geschrieben ist, garantiert, dass Ihre Kollegen ihn einfacher und schneller verstehen und Ihnen keine Kritik entgegenbringen. Mit modernen Entwicklungstools ist es nicht so schwer, sich an Stilregeln zu halten. Ich hoffe, diese Rezension hat Ihnen bewiesen, dass dies wahr ist. Der Tradition folgend finden Sie hier etwas zusätzliches Material zum Thema:- Video von JetBrainsTV: „ Inspect Code (IntelliJ IDEA) “
- Rezension von „ Code-Analyse mit Gradle-Plugins “
- Kurs „ Codequalität automatisieren “.
GO TO FULL VERSION