CodeGym/Java-Blog/Random-DE/IntelliJ IDEA: Codierungsstil und Codeformatierung
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

IntelliJ IDEA: Codierungsstil und Codeformatierung

Veröffentlicht in der Gruppe Random-DE
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. IntelliJ IDEA: Codierungsstil und Codeformatierung – 1Die 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: 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 autoimportKontrollkä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 zur AppTestKlasse. 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 CodeMenü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 -> Settingsim 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: IntelliJ IDEA: Codierungsstil und Codeformatierung – 2Der 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: IntelliJ IDEA: Codierungsstil und Codeformatierung – 3Um eine Formatierung zu verhindern, aktivieren Sie im Abschnitt „Codestil“ die Formatierungsmarkierungen: IntelliJ IDEA: Codierungsstil und Codeformatierung – 4Jetzt können wir unsere Testklasse so ändern, dass ihr Code nicht neu formatiert 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 StyleBereich „ “ ändern: IntelliJ IDEA: Codierungsstil und Codeformatierung – 5Wie Sie sehen, gibt es dort viele Einstellungen. Weitere Details zu den Code styleEinstellungen 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 ImportsRegisterkarte „ “ 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 mit File -> Settings(oder drücken Sie Strg+Alt+S). Im Code StyleAbschnitt „ “ 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. IntelliJ IDEA: Codierungsstil und Codeformatierung – 6Dann können wir die Einstellungen importieren oder exportieren: IntelliJ IDEA: Codierungsstil und Codeformatierung – 7 Eine andere Möglichkeit besteht darin, IDEA-Einstellungen zu importieren: IntelliJ IDEA: Codierungsstil und Codeformatierung – 8Eine 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 „ “. Browse RepositoriesDann Finden Sie das Eclipse Code Formatter-Plugin im Suchfenster. IntelliJ IDEA: Codierungsstil und Codeformatierung – 9Nach 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: IntelliJ IDEA: Codierungsstil und Codeformatierung – 10

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 buildund 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: IntelliJ IDEA: Codierungsstil und Codeformatierung – 11Darüber hinaus enthält die Spalte „ Problem“ einen Link zu einer Beschreibung des Problems auf der Website des PMD-Plugins. Für den headerCommentRequirement RequiredFehler „ “ 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: IntelliJ IDEA: Codierungsstil und Codeformatierung – 12Und den Inhalt für Folgendes angeben File Header: IntelliJ IDEA: Codierungsstil und Codeformatierung – 13Danach können wir den Kommentar über der App-Klasse in ein JavaDoc umwandeln und sehen, dass der Fehler in einem neuen Build behoben ist.

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:
Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare