[JAVA] Schreiben Sie einfach zu wartenden Code (Teil 1)

0. Worüber man diesmal reden soll

1. Zuallererst

Dieses Mal habe ich meine Gedanken darüber zusammengefasst, wie man besseren Code schreibt. Da eine Serialisierung geplant ist, wird diesmal nur ein kleiner Teil vorgestellt.

Es gibt keine 100% richtige Antwort in der Codierung. Wir werden die Vor- und Nachteile so weit wie möglich vorstellen, daher ist es am besten, sie je nach Zeit und Fall richtig zu verwenden.

Darüber hinaus geht dieser Artikel von "einem System aus, das auch in Zukunft gewartet und gewartet wird". Es wird nicht empfohlen für "Systeme, die die Menge an Code und die Codierungsgeschwindigkeit betonen, auch wenn es für andere etwas schwierig ist, diese zu verstehen."

2. Grundeinstellung

Wenn ein neuer Ingenieur in den Vordergrund tritt, kommt er auf diese Idee.

Haben Sie keine Angst, dies falsch zu verstehen, Sie sollten aufhören.

Ich werde diejenigen ergänzen, die sagen: "Ich werde Ihnen eine Verarbeitungsmethode zeigen, die Senioren und alle nicht kennen." Wir begrüßen Sie, neue Technologien zu integrieren. Ich möchte jedoch, dass Sie als Set über den Informationsaustausch und die Aufklärung anderer Mitglieder nachdenken. Ich bin froh, dass die Person stetig wächst, aber es ist schlecht für die Organisation, dass niemand den Code überprüfen kann. Die Person, die sich öffnet, und die Person, die sich weiterbildet, müssen nicht unbedingt dieselbe Person sein, aber stellen Sie sicher, dass Sie dies paarweise tun.

Für diejenigen, die "mit einem genialen Algorithmus überraschen möchten, an den nur ich denken kann", tun Sie es nicht, wenn niemand sonst Ihren Code versteht. "Hmm, ich weiß nicht, was es ist, aber Mr. ●● macht es und das Ergebnis ist korrekt, ist es nicht in Ordnung?" Ist als Organisation nicht gut. Auch wenn es etwas langwierig oder ressourcenschonend ist, sollte "Code, der einfach zu warten ist", priorisiert werden. Als Leitfaden können etwa 80% der Mitglieder dies verstehen, indem sie sich den Code ansehen und ein wenig nachdenken. Lassen Sie uns natürlich die Bildung für die restlichen 20% dazwischen legen.

3. Techniksammlung

3.1. Denken Sie an nichts und übergeben Sie Objekte als Argumente

Vor der Korrektur


public class Item {
  //Eindeutige Artikel-ID
  private int id;
  //Artikelname
  private String name;
}

//Element löschen
public void deleteItem(Item item) {
 //Prozess löschen
}

Der obige Code setzt voraus, dass die Schlüssel-ID vom Browser empfangen und gelöscht wird, da bereits Daten in der Datenbank registriert sind. Was benötigen Sie normalerweise, um den Löschvorgang durchzuführen? Ja, es reicht aus, nur eine "ID" zu haben, die eindeutig angibt, was gelöscht werden soll. Im obigen Beispiel wird jedoch nicht nur die ID an die Methode übergeben, sondern auch als Item-Objekt.

Wenn Sie dieses deleteItem () in Zukunft an anderer Stelle verwenden möchten, müssen Sie sich die Mühe machen, das Item-Objekt als neu zu übergeben. Muss ich zu diesem Zeitpunkt einen Wert für den Namen eingeben? Wenn Sie es als null übergeben, weil Sie es nicht verwenden, werden Sie bei zukünftigen Verbesserungen versehentlich den Namen null verwenden? Es gibt viele Dinge zu beachten.

Überarbeitet


public class Item {
  //Eindeutige Artikel-ID
  private int id;
  //Artikelname
  private String name;
}

//Element löschen
public void deleteItem(int id) {
 //Prozess löschen
}

Auf diese Weise ist es offensichtlich, dass "Oh, nur die ID reicht für den Löschvorgang aus", und es wird einfacher sein, sie wiederzuverwenden.

Nehmen wir jedoch an, dass in einer zukünftigen Verbesserung "Ich möchte eine Löschverlaufsfunktion hinzufügen, daher benötige ich beim Löschen den Wert name, damit ich sehen kann, was ich gelöscht habe!". Dies ändert die Schnittstelle von deleteItem () und erfordert Änderungen und Tests aller Aufrufer. Wenn Sie wissen, dass es solche Verbesserungen gibt, ist es möglicherweise eine gute Idee, die Item-Klasse zu bestehen.

Wenn die Anzahl der Argumente sehr groß ist, können Sie jedes Item-Objekt mit Schwerpunkt auf Lesbarkeit übergeben, nachdem Sie es gegen eine verringerte Wiederverwendbarkeit abgewogen haben.

verdienen

Einfach wiederverwendbare Teile Leicht zu verstehen, welche Parameter für die Verarbeitung benötigt werden

Fehler

Wenn ein Fix geplant ist, müssen alle Verwendungspunkte repariert und erneut getestet werden.

3.2 Achten Sie beim Schneiden einer Zeichenkette darauf, wie sie geschnitten wird.

Vor der Korrektur


function jumpToEditPage() {
  var urlStr = (isCreate) ? "Create" : "Edit"
  var url = "https://www.hoge.com/item" + urlStr;
  location.href = url;
}

Dies ist der Javascript-Code beim Übergang zum Eingabeformularbildschirm. Angenommen, Sie möchten einige Bedingungen anzeigen und den Bildschirm mit der URL "itemCreate" für die neue Registrierung und "itemEdit" für die Bearbeitung ändern. In diesem Code werden die Zweige nur durch die verschiedenen Zeichenfolgen "Erstellen" und "Bearbeiten" generiert, um sie so allgemein wie möglich zu gestalten.

Sagen Sie übrigens: "Da der Dienst beendet wurde, löschen wir das Programm, nachdem wir bestätigt haben, dass dieser Bildschirm von keiner Stelle aus angezeigt wird." Wie bestätigen Sie zu diesem Zeitpunkt, dass "dieser Bildschirm nicht angezeigt wird"?

Möchten Sie nach HTML mit den Zeichenfolgen "itemCreate" und "itemEdit" suchen?

In diesem Fall wird diese Schreibweise bei der Suche nicht erfasst. Selbst wenn einige Leute bemerkten: "Oh, Sie können hier nicht so erwischt werden, wie es ist, seien Sie also vorsichtig bei der Suche!". Wenn Sie nach "Erstellen" suchen, wird eine große Anzahl irrelevanter Teile abgefangen, und infolgedessen werden wichtige Teile übersehen. Es könnte so etwas sein.

Überarbeitet


function jumpToEditPage() {
  var urlStr = (isCreate) ? "itemCreate" : "itemEdit"
  var url = "https://www.hoge.com/" + urlStr;
  location.href = url;
}

Selbst wenn es verzweigt ist, scheint es einfacher zu warten, wenn es in dieser Einheit organisiert ist.

verdienen

Leicht zu pflegen

Fehler

Ich denke, es ist fast nicht vorhanden

3.3. Lassen Sie uns aufhören, tief verschachtelte if-Anweisungen

Vor der Korrektur


public boolean test(){
  if(A == a){
    if(B != b){
      if(C == c){
        return true;
      }
    }
  }
  return false;
}

In diesem Beispiel gibt es 3 Ebenen. Wenn dies jedoch zu 10 Ebenen wird und der bedingte Ausdruck lang wird, ist er nicht mehr außer Kontrolle. Wenn es nach rechts eingerückt ist, treten Zeilenumbrüche auf, die die Lesbarkeit beeinträchtigen können.

Überarbeitet


public boolean test(){

  if(A != a){
    return false;
  }
  if(B == b){
    return false;
  }
  if(C != c){
    return false;
  }

  return true;
}

Wie ist das? Auf Japanisch wird es vor der Korrektur als "Das ist es, und es ist zu diesem Zeitpunkt wahr" gelesen. Es ist ein Bild, das beurteilt werden muss, indem alle Bedingungen im Puffer gespeichert werden. Nach der Korrektur wird gelesen: "Dies ist zu diesem Zeitpunkt der Fall. Dies ist zu diesem Zeitpunkt der Fall. Dies ist zu diesem Zeitpunkt der Fall. Ansonsten ist dies der Fall." Wenn Sie jede Bedingung der Reihe nach verarbeiten, sieht es aus wie ein leicht verständlicher Code. Darüber hinaus ist die Hierarchie nicht tief und es ist unwahrscheinlich, dass die Lesbarkeit abnimmt.

verdienen

Eine Verschlechterung der Lesbarkeit wird unterdrückt

Fehler

Es kann für diejenigen schwierig sein, die es nicht gewohnt sind, es zu lesen.


Diese Zeit ist vorbei. Ich werde auch aus einer ähnlichen Perspektive zusammenfassen.

Recommended Posts

Schreiben Sie einfach zu wartenden Code (Teil 1)
Schreiben Sie einfach zu pflegenden Code (Teil 4)
Schreiben Sie einfach zu wartenden Code (Teil 3)
Schreiben wir einen Code, der einfach zu pflegen ist (Teil 2)
Schreiben Sie Code, der schwer zu testen ist
Code, der schwer zu debuggen und zu analysieren ist
Denken Sie an Testcode, der durch den Komparator-Test leicht zu verstehen ist
Wie man Code schreibt, der objektorientiertes Ruby denkt
Einfach zu wartender FizzBuzz
Wie man guten Code schreibt
Java 14 neue Funktionen, mit denen Code geschrieben werden kann
[Java] Code, der schwer zu bemerken, aber furchtbar langsam ist
Die Funktion ist sehr einfach zu bedienen
So schreiben Sie leicht verständlichen Code [Zusammenfassung 3]
So identifizieren Sie den Pfad, auf dem leicht Fehler gemacht werden können
AtCoder heißt TLE und spricht darüber, wie man schönen Code schreibt
So schreiben Sie Testcode mit Basic-Zertifizierung
Schreiben Sie zur Implementierung den Test und codieren Sie den Prozess
Verwenden Sie stream, um zu überprüfen, ob SimpleDateFormat threadsicher ist
Easy Null Check - Ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 6 [C # Refactoring-Beispiel]