Von ineffektivem Java zu effektivem Java

Ineffektives Java ist eine Welt, in der effektives Java nicht existiert

In letzter Zeit, wenn ich mit Java entwickle, denke ich, dass Anwendungen häufig mit Frameworks wie Spring Boot erstellt werden. Spring Boot ist wirklich gut. Es gibt viele großartige Mechanismen, um die Menge des geschriebenen Codes zu reduzieren, wie z. B. DI und AutoConfigure.

Programmierer, die mit Java vertraut sind, entwerfen und implementieren das Framework häufig als Architekten. Erstellen Sie eine Architektur, die mithilfe von Vorlagenmethodenmustern usw. einfach in Massenproduktion hergestellt werden kann. Anschließend werden durch Berühren des Programmierers, der die einzelnen Funktionen implementiert, der Bildschirm und die Geschäftsverarbeitung gemäß dem Framework erstellt.

Eine Geschäftsabwicklung ist jedoch selbstverständlich erforderlich. ** Wie wäre es mit der Qualität einer so großen Menge an Code, die parallel auf Ihrer Site geschrieben wurde? ** ** ** Ich hatte ein Problem damit und dachte, dass ** dies einen Ingenieur erfordert, der es am Entwicklungsstandort richtig bemerkt **, also begann ich mit der Java-Ausbildung für das Unternehmen. Dieser Artikel fasst zusammen, was ich während der Schulung in der Codeüberprüfung bemerkt habe: ** "Oh, ich verstehe das nicht" **. Ich hoffe, dass die Manager, die oft fragen: "Warum schreiben Sie diese Art von verdammtem Code?", Was häufig der Fall ist, wenn Sie einen Fehler finden, die Bedeutung von Aufklärung und Überprüfungen erkennen. Vielleicht haben diese Arbeitsplätze Bücher wie Effective Java / Readable Code oder sind sie staubig? ** Bildung ist sehr wichtig. ** ** ** Ich benutze HashMap für alles und der Grund, warum ich während der Logik Protokolle ausspucke, ist, dass ich das nicht weiß.

Was ist Java-Bildung?

2 Abkühlungen gehalten

Es ist wie eine wöchentliche Vorlesung (2 Stunden) zu halten, Übungen zu geben, eine Pull-Anfrage zu erhalten, zu überprüfen und zurückzukehren. Ich habe Slack während des Vortrags verfolgt. Für die Unterrichtsmaterialien haben wir die Unterrichtsmaterialien von Herrn Casa Real gekauft und implementiert. Es ist teurer als der Kauf eines allgemeinen Buches, aber es ist sehr gut, dass die Reihenfolge der Erklärungen gut organisiert ist. Ich glaube nicht, dass Sie ein Lehrbuch brauchen, wenn Sie immer ein Paar professionell sein können, aber ich glaube, ich war süchtig nach Inhouse-Bildung wie dieser.

Die Zielperson ist eine solche Person

――Erstes Jahr, als ich anfing, Java for Business zu schreiben ―― Eigentlich schreibe ich Java, aber es sind ungefähr 3-4 Jahre ――Es ist 10 Jahre her, seit ich von einer anderen Sprache zu Java gewechselt bin.

Dann werde ich alle Inhalte vorstellen, die ich in der Pull-Anfrage gesehen habe und die ich wissen sollte. Das Ranking ist mein Gefühl. Wenn Sie dies wissen möchten, fragen Sie bitte die Neulinge in Ihrer Nähe. Es gibt wahrscheinlich auch um dich herum. ** Ich weiß nicht was ich nicht gelernt habe **.

Ineffective Java

Punkt 1 Was ist toString ()?

Ich war überrascht, dass viele Menschen die Rolle dieser Methode nicht kannten. Haben Sie jemals den Code object.getXXX () + object.getYYY () gesehen, obwohl toString () bereits im Objekt implementiert ist?

Dies war hinter den Kulissen, wo ich die Bedeutung von toString () nicht kannte. Bitte fragen Sie die jungen Leute um Sie herum.

Punkt 2 Die Deklaration des Typs auf der linken Seite ist immer dieselbe wie die des Typs auf der rechten Seite

ArrayList<String> list = new ArrayList<>();

Natürlich sollte die linke Seite "List " sein. Wenn jedoch keine Überlegungen wie Grenzfläche oder Polymorphismus angestellt werden, wird die linke Seite mit demselben Typ wie die rechte Seite deklariert. Für Menschen in einem solchen Zustand ist ** OCP ** ein Chaos, daher ist es notwendig, Schritt für Schritt in der Reihenfolge der Vererbung-> Schnittstelle-> Sammlung-> Polymorphismus zu erklären. Dies allein ermöglicht es Ihnen, die linke Seite richtig zu denken und zu definieren. (Es ist nicht bekannt, ob die Begriffe linke und rechte Seite korrekt sind.)

Punkt 3 In Wrapper konvertieren

Long.valueOf(Files.size(pathA)).equals(Long.valueOf(Files.size(pathB)));

Ich denke, es wurde irgendwo kopiert. Oder wenn Sie es zu einem Rapper machen, fühlen Sie sich möglicherweise sicher. Sie müssen richtig verstehen, um Primitive als Primitive zu behandeln. Wenn Sie dies verstehen, werden Sie allmählich feststellen, dass es eine schlechte Idee ist, Objekte vergeblich zu erstellen.

Punkt 4 Unnötige Kommentare

Sie haben diesen Code gesehen, nicht wahr? "Der automatisch generierte Kommentar von Eclipse bleibt", "Kommentar, bei dem die Variablenbeschreibung keine Rolle spielt" Im ersten Fall war ich zu verzweifelt, um den Code überhaupt zu schreiben, und ich konnte die Kommentare nicht sehen. Letzteres ist ein Beispiel für das Aufwachsen, nachdem man nur die Ausbildung erhalten hat, für die Kommentare wichtig sind.

Ich merke sofort, dass ich ein Paar Profi bin, aber wenn ich es nicht tue, werde ich von niemandem lernen, also wird es für immer weitergehen. Lass es mich dir richtig sagen. ** Grundsätzlich ist kein Kommentar erforderlich. Es ist notwendig, wenn Sie etwas Unregelmäßiges in Ihrem Unternehmen tun möchten. Andernfalls kann aufgrund des Kommentars in der späteren Wartungsphase ** ein Fehler auftreten.

Punkt 5 Ich brauche hier keine if-Anweisung

public boolean isLessThan1KB(String file) throws Exception {  
        //Pfadobjektgenerierung
        Path path = Paths.get(file);  
        if (Files.size(path) < 1024) {  
            return true;  
        } else {  
            return false;  
        }  
    }

Das ist viel. Nach der if-Anweisung wird sie mit return Files.size (path) <1024; umgeschrieben. Dies ist häufig der Fall, wenn Sie glauben, dass der Code, den Sie einmal geschrieben haben, endet, wenn er funktioniert. Um sich überflüssig zu fühlen, ist eine hochrangige Codeüberprüfung unerlässlich.

Punkt 6 Ich sehe den Rückgabewert aus irgendeinem Grund nicht

    public void delLine(String line) { 
        lines.remove(lines.indexOf(line)); 
    }

Die Methode List #remove hat einen Rückgabewert. In einigen Fällen wird der Rückgabewert ignoriert und unverändert verwendet. Es kann eine solche Art geben, dies irgendwo im Netz zu schreiben. Hinter den Kulissen sind Anfänger oft nicht gut im Umgang mit Fehlern. Wenn Sie ** Ausnahmen, Fehlerbehandlung ** usw. verstehen, werden diese auf natürliche Weise behoben.

Punkt 7 Nicht vertraut mit Versuchen mit Ressourcen

Sogar jetzt gibt es viele Leute, die sagen, dass das JDK im Feld 6 ist. Wie lange werde ich früher noch schreiben? Dies ist für alle Anweisungen, Streams, Lambdas usw. gleich, unabhängig von twr. Wir empfehlen Ihnen, Java 8 richtig zu studieren. ** Für Neulinge, die mit Java 11 beginnen, sind diese nur eine Bedrohung. ** ** **

Punkt 8 Willst du nisten?

if(xxx == true) {
 //wird bearbeitet
} else {
 //wird bearbeitet
}

Ein seriöser Programmierer, der immer so schreibt. Ich möchte Ihnen sagen, dass es auf der Welt eine Schutzklausel gibt. Die Verwendung der Guard-Klausel macht es meistens noch erfrischender. ** Eine der Ursachen ist, dass der Code voller Nester ist. Verstehen. Sie können den Unterschied nicht erkennen, selbst wenn Sie die Anzahl der Nester um eins reduzieren **. Wenn Sie ihn jedoch richtig überprüfen, können Sie ihn auf einen Schlag verstehen, sodass der unmittelbare Effekt extrem hoch ist.

Punkt 9 Ich verstehe die Bedeutung von equals () nicht

Dies ist in erster Linie sehr schwierig. Selbst fortgeschrittene Java-Benutzer können es schwierig finden, dies sofort zu erklären. Wenn ich das jedoch nicht verstehe, habe ich Angst und kann TreeMap nicht verwenden. Weil ich nicht weiß, ob ein Objekt richtig sortiert wird. Also, ** Ich werde immer ein HashMap-Bastard, bekomme () und knete dann. ** ** ** Wenn Sie equals () implementieren, implementieren Sie natürlich auch hashCode (). Wenn Sie dies nicht tun, werden viele seltsame Dinge passieren. Wenn dies richtig verstanden wird, ist der Code komplexer als dieses Verständnis. Dies ist genau effektives Java.

Punkt 10 Unveränderlich? ??

Ich kenne keine unveränderlichen Objekte. Dies ist ein sehr wichtiges Wissen, um vom Anfänger zum Fortgeschrittenen zu gelangen. Die Fähigkeit, auf den Zustand eines Objekts zu schließen, um die versteckten Fehler zu beseitigen. Ich denke, dies ist ein fortgeschrittener Java-Benutzer. Wie kann ich ein unveränderliches Objekt erstellen? Wann benutzt du es? ** Wenn Sie das wissen, wird das Angebot an Klassendesign erheblich erweitert. Im Gegenteil, wenn Sie dies nicht tun, können Sie nur für immer ein einheitliches Design entwerfen. ** ** **

Auch wenn es nicht direkt mit unveränderlich zusammenhängt, gibt es Fälle, in denen es nicht möglich ist, richtig zu erklären, was final bedeutet, obwohl es sich um eine Liste wie "final List stringList;" handelt. Daher ist es äußerst wichtig, dies auch richtig zu verstehen.

Von Ineffective Java zur Welt mit Effective Java

Es gab viele Inhalte wie eine Brücke vom Anfänger zum Fortgeschrittenen, aber viele davon können durch das Lesen von Effective Java wachsen. Fragen Sie Anfänger, was Fortgeschrittene nicht verstehen. Wenn Sie eine fortgeschrittene Person sind, laden Sie einen Anfänger zu einer Lesung ein. Effective Java 3rd Edition

Dies wird empfohlen, wenn Sie Java 8 neu lernen möchten Java SE 8 Praktische Programmierung, die Java-Programmierer lernen möchten

Recommended Posts

Von ineffektivem Java zu effektivem Java
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Von Java zu Ruby !!
Migration von Cobol nach JAVA
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Schnittstelle für Anfänger
Der Weg von JavaScript nach Java
[Java] Konvertierung von Array zu Liste
Effektives Java Kapitel 2
Effektives Java Kapitel 6 34-35
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
[Java] Einführung in Java
Post to Slack von Play Framework 2.8 (Java)
Java: So senden Sie Werte von Servlet zu Servlet
Einführung in die Überwachung von Java Touching Prometheus
Einführung in Java
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Effektives Java Kapitel 4 15-22
Memo für die Migration von Java nach Kotlin
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ
Effektives Java Kapitel 3
[Java] Von zwei Listen zu einer Array-Liste
Upsert von Java SDK zu Azure Cosmos DB
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Um ein VB.net-Programmierer aus einem Java-Shop zu werden
Migrieren Sie von Java zu Server Side Kotlin + Spring-Boot
So erhalten Sie eine Klasse von Element in Java
Ich möchte schnell von Java nach SQLite schreiben
Minecraft BE Serverentwicklung von PHP nach Java
Wählen Sie * aus dem Java SDK in Azure Cosmos DB
Migrieren Sie von JUnit 4 zu JUnit 5
Eval Java-Quelle von Java
[Java] Stellen Sie eine Verbindung zu MySQL her
Greifen Sie über Java auf API.AI zu
Kotlins Verbesserungen an Java
Einführung in den Java-Befehl
Starten Sie Docker von Java aus, um Office-Dokumente in PDF zu konvertieren
Konvertieren Sie Java Enum Enumeration und JSON von und nach Jackson
[Java] Ich möchte die Differenz zum Datum berechnen
So springen Sie von Eclipse Java zu einer SQL-Datei
Wie schreibe ich Scala aus der Perspektive von Java
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
6 Funktionen, die ich nach meiner Rückkehr von Scala nach Java verpasst habe
So wechseln Sie von Oracle Java 8 zu Adopt Open JDK 9
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
Generieren Sie Modelle von JSON zu Swift, PHP, C #, JAVA
Aktualisierungen von Effective Java Third Edition 2nd Edition Persönliche Notizen
Von iBATIS zu MyBatis3 verschoben
Versuchen Sie Spring Boot von 0 bis 100.
Einführung in effektives Java durch Üben und Lernen (Builder-Muster)
Effektive Java 3rd Edition Kapitel 3 Allen Objekten gemeinsame Methoden
So senken Sie die Java-Version
[Java] Verwendung von Map