So erzwingen Sie Codierungskonventionen in Java

Zweck

Es tut mir leid für den eingängigen oder Angel-Titel m (_ _;) m Kurz gesagt, ich werde erklären, wie das Muster der Vorlagenmethode praktisch verwendet wird. Es ist schwierig, den Codierungsstandard auf alle Entwicklungsmitglieder zu übertragen. Ich frage mich, ob es viele Dinge gibt, die schief gehen, wie Zeitmangel und schlechte Codeüberprüfungen, unterschiedliche Fähigkeiten und so weiter. Wenn Sie also mehrere Geschäftslogiken für mehrere Personen freigeben und erstellen möchten, sollten Sie die zugrunde liegende Klasse berücksichtigen, die die Implementierung dazu zwingt, die Codierungskonventionen einzuhalten.

Umgebung

Methode

Erzwingen, dass der Methodenname, das Argument und der Rückgabewert implementiert werden. Die einzige Regel "Diese Klasse muss erben" erzwingt den Methodennamen und seine Rolle für jede Geschäftslogikklasse. Der Punkt ist das Muster der Vorlagenmethode.

Klassenstruktur

Die Struktur der Klasse ist wie folgt. DTO-Klasse: FooInfoDto.java, BarInfoDto.java ビジネスロジック親クラス:Proces.java Geschäftslogikklasse (Teil der Implementierungsfreigabe): ProcesHoge01.java, ProcesHoge02.java メインクラス(ビジネスロジック呼出し部分):Main.java

1. 1. Es sind INPUT- und OUTPUT-DTO-Klassen verfügbar

DTO "FooInfoDto" der Klasse (INPUT), die den Wert vor der Verarbeitung enthält, Erstellen Sie ein DTO "BarInfoDto" für die Klasse (OUTPUT), die die verarbeiteten Werte enthält. Da es sich um dasselbe Feld handelt, können sowohl INPUT als auch OUTPUT dasselbe DTO sein. Dies ist jedoch einfacher zu verwalten, da es besser ist, klar zu trennen, welcher Wert vor und nach der Verarbeitung beibehalten wird. Es ist überflüssig, aber es ist getrennt.

FooInfoDto.java


package dto;

public class FooInfoDto {

  private Integer id = null;

  private String value = null;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getValue() {
    return value;
  }

  public void setValue(String value) {
    this.value = value;
  }

}

BarInfoDto.java


package dto;

public class BarInfoDto {

  private Integer id = null;

  private String value = null;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getValue() {
    return value;
  }

  public void setValue(String value) {
    this.value = value;
  }

}

2. Erstellen Sie eine übergeordnete Klasse, um die Implementierung zu erzwingen

Da der Methodenname und seine Rolle nur durch die Regel erzwungen werden können, dass "jede Geschäftslogik diese übergeordnete Klasse erbt und implementiert", ist es leicht zu verstehen, "welche Klasse welche Verarbeitung ausführt?" Werden. Der Zweck von abstrakten Klassen anstelle von Schnittstellen besteht darin, nur einige Verarbeitungsteile in jeder Geschäftslogik zu implementieren und gemeinsame Teile in dieser übergeordneten Klasse zu aggregieren.

Proces.java


package businesslogic;

import java.util.List;
import dto.BarInfoDto;
import dto.FooInfoDto;

public abstract class Proces {

  protected abstract String getProcesName();

  protected abstract void proces(List<FooInfoDto> input , List<BarInfoDto> output);

  public void execute(List<FooInfoDto> in, List<BarInfoDto> out) {

    System.out.println( getProcesName() + "Starten Sie die Verarbeitung." );

    proces(in, out);

    System.out.println( getProcesName() + "Die Verarbeitung ist abgeschlossen." );

  }

}

Die "getProcesName-Methode" gibt die Rolle "einen beschreibenden Namen zurückgeben, um anzugeben, was die Klasse tut". Indem Sie den Modifikator auf "geschützt" setzen, können Sie verhindern, dass er von Klassen außerhalb des Pakets aufgerufen wird.

Die "Prozessmethode" ist eine abstrakte Methode, "um den tatsächlichen Verarbeitungsinhalt der Geschäftslogik zu implementieren". Setzen Sie den Modifikator erneut auf "protected", damit er nicht von Klassen außerhalb des Pakets aufgerufen werden kann.

Die "Ausführungsmethode" ist die einzige Methode, die von der Benutzerseite aufgerufen werden kann, dh die Hauptklasse (eine Klasse außerhalb des Businesslogic-Pakets). Hier können Sie die Hook-Verarbeitung, die Verarbeitungsreihenfolge usw. erzwingen.

3. 3. Status der Geschäftslogik durch Teilen implementiert

Der Teil, den die Mitglieder tatsächlich implementieren.

ProcesHoge01.java


package businesslogic;

import java.util.List;
import dto.BarInfoDto;
import dto.FooInfoDto;

public class ProcesHoge01 extends Proces {

  @Override
  protected String getProcesName() {
    return "Hoge01 Verarbeitung";
  }

  @Override
  protected void proces(List<FooInfoDto> input, List<BarInfoDto> output) {

    //Tatsächlicher Hoge-Verarbeitungsinhalt
    int index = 0;
    for( FooInfoDto dto : input ) {

      Integer tmpId = dto.getId()*10;
      output.get(index).setId(tmpId);

      String tmpValue = dto.getValue()+"_Hoge01";
      output.get(index).setValue(tmpValue);

      index++;
    }
  }
}

ProcesHoge02.java


package businesslogic;

import java.util.List;
import dto.BarInfoDto;
import dto.FooInfoDto;

public class ProcesHoge02 extends Proces {

  @Override
  protected String getProcesName() {
    return "Hoge02 Verarbeitung";
  }

  @Override
  protected void proces(List<FooInfoDto> input, List<BarInfoDto> output) {

    //Tatsächlicher Hoge-Verarbeitungsinhalt
    int index = 0;
    for( FooInfoDto dto : input ) {

      Integer tmpId = dto.getId() + output.get(index).getId();
      output.get(index).setId(tmpId);

      String tmpValue = dto.getValue()+"_Hoge02";
      output.get(index).setValue(tmpValue);

      index++;
    }
  }
}

4. Klasse, die Geschäftslogik aufruft

Tatsächlich ist es der Teil, der der Controller-Klasse entspricht. Hier wird es als eine Klasse implementiert, die leicht zu verstehen ist und einfach von der Hauptmethode ausgeführt wird. Ich habe die Pakete als Standard belassen, aber es wäre schön, wenn sie von den Paketen der Geschäftslogikklassen getrennt werden könnten.

Main.java


import java.util.ArrayList;
import java.util.List;
import businesslogic.ProcesHoge01;
import businesslogic.ProcesHoge02;
import dto.BarInfoDto;
import dto.FooInfoDto;

public class Main {

  public static void main(String[] args) {

    //DTO-Liste zum Speichern der Verarbeitungsergebnisse
    List<BarInfoDto> out = new ArrayList<BarInfoDto>();

    //Bereiten Sie eine zu verarbeitende Eingabe-DTO-Liste vor
    List<FooInfoDto> in = new ArrayList<FooInfoDto>();
    for(int i=1 ; i<4 ; i++){
      FooInfoDto dto = new FooInfoDto();
      dto.setId(i);
      dto.setValue(i+"Zweiter Wert");

      //In der zu verarbeitenden Eingabe-DTO-Liste festlegen
      in.add(dto);

      //Legen Sie in der DTO-Liste ein leeres DTO-Objekt fest, in dem das Verarbeitungsergebnis gespeichert ist
      out.add(new BarInfoDto());

    }

    new ProcesHoge01().execute(in, out);
    //Ergebnisanzeige
    for(BarInfoDto dto : out) {
      System.out.println( "-------------------------------" );
      System.out.println( "ID nach der Verarbeitung> " + dto.getId() );
      System.out.println( "Wert nach der Verarbeitung> " + dto.getValue() );
    }

    new ProcesHoge02().execute(in, out);
    //Ergebnisanzeige
    for(BarInfoDto dto : out) {
      System.out.println( "-------------------------------" );
      System.out.println( "ID nach der Verarbeitung> " + dto.getId() );
      System.out.println( "Wert nach der Verarbeitung> " + dto.getValue() );
    }
  }
}

das ist alles.

Bemerkungen

Wie war es? Wir würden uns freuen, wenn Sie uns Ihre Meinung und Ihren Rat geben könnten. m (_ _) m

Ich denke, Sie können die Hauptklasse zu einer Fassadenklasse mit einem Fassadenmuster machen, um die Lesbarkeit weiter zu verbessern.

Recommended Posts

So erzwingen Sie Codierungskonventionen in Java
So implementieren Sie den Kalman-Filter mit Java
[Java] So implementieren Sie Multithreading
Zusammenfassung der Implementierung von Standardargumenten in Java
Wie man JAVA in 7 Tagen lernt
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Versuchen Sie, Yuma in Java zu implementieren
So verketten Sie Zeichenfolgen mit Java
Java-Codierungskonvention
So implementieren Sie Suchfunktionen in Rails
Versuchen Sie, n-ary Addition in Java zu implementieren
Einbetten von Janus Graph in Java
So erhalten Sie das Datum mit Java
So implementieren Sie Ranking-Funktionen in Rails
So implementieren Sie die asynchrone Verarbeitung in Outsystems
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
Lose Java-Codierungskonventionen
So erhalten Sie eine Klasse von Element in Java
So verbergen Sie Nullfelder als Antwort in Java
So implementieren Sie eine ähnliche Funktion in Rails
So implementieren Sie optimistisches Sperren in der REST-API
So lösen Sie Ausdrucksprobleme in Java
Wie schreibe ich Java String # getBytes in Kotlin?
So implementieren Sie Paginierung in GraphQL (für Ruby)
So implementieren Sie UICollectionView mit Code nur in Swift
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
So senken Sie die Java-Version
[Java] Verwendung von Map
So implementieren Sie eine nette Funktion in Ajax mit Rails
So deinstallieren Sie Java 8 (Mac)
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
Java - So erstellen Sie JTable
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
Verwendung von Java Optional
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Implementierung der zweistufigen Authentifizierung in Java
So erstellen Sie einen Daten-URI (base64) in Java
[Java] Verwendung von removeAll ()
Implementieren Sie die Standardauthentifizierung in Java
Verwendung von Java Map
So legen Sie Java-Konstanten fest
2 Implementieren Sie eine einfache Syntaxanalyse in Java
Implementieren Sie das Senden von E-Mails in Java
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
So verwalten Sie Java EE-Projekte in Eclipse
Verwendung von Java-Variablen
Implementieren Sie eine funktionsähnliche schnelle Sortierung in Java
So konvertieren Sie Java Base
[Rails] So implementieren Sie Scraping
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren