[JAVA] Code Geruch Refactoring [faule Klasse]

Das vierte Refactoring ist die faule Klasse.

Was ist faul Klasse

Faule Klasse. Ein Zustand, in dem die Klasse mit wenig Verhalten faul ist. (Ich verstehe nicht, was es bedeutet zu existieren)

Warum schlecht

Es ist nicht nötig. Sei überflüssig.

Gemeinsame Muster

Eine übliche Struktur besteht darin, vorerst die folgende Serviceklasse zu erstellen und den Prozess dorthin zu werfen.


package study.lazyclass

class PaymentController {
  def payment(amount: Int) = {
    val service = new Service
    service.pay(amount)
  }
}

class PaymentService {
  def pay(amount: Int): Unit = {
    paymentRepository.save(amount)
  }
}

In der PaymentService-Klasse ist nur die Zahlungsmethode definiert. Die Serviceklasse hat nur das Verhalten einer Zahlungsmethode.

Lösung

Die Lösung selbst ist sehr einfach.

Funktion inline Sie können es machen, wenn Sie es brauchen. Die einzige Zeit zum Erstellen einer Klasse ist, wenn Sie eine Klasse benötigen, die Funktionen organisiert, z. B. wenn sie von zwei oder mehr Stellen aufgerufen wird.


class PaymentController {
  def payment(amount: Int) = {
    paymentRepository.save(amount)
  }
}

Ich ändere den PaymentRepository direkt von PaymentController aus.

Dies steht im Einklang mit dem bekannten YAGNI-Gesetz.

[https://ja.wikipedia.org/wiki/YAGNI:embed:cite]

Denkweise

Hier ist der wichtige Gesichtspunkt dieses Codegeruchs.

Laza Class Reda Factoring selbst ist sehr einfach, aber ** ob Refactoring tatsächlich durchgeführt werden soll oder nicht, hängt von der Entwicklungsmethode ab. ** ** **

Wenn Sie an eine Architektur denken, die sich von Anfang an anpasst, z. B. an eine Anwendungskonfiguration mit einer mehrschichtigen Architektur, müssen Sie nicht wie oben beschrieben umgestalten.

Selbst wenn Sie nur eine Funktion haben, müssen Sie die Ebenen richtig trennen und definieren.

Wenn Sie beispielsweise eine geschichtete Architektur verwenden, müssen Sie die Abhängigkeiten so gestalten, dass sie von oben nach unten in eine Richtung verlaufen (siehe Abbildung unten). Es ist nicht möglich, das Repository (Infrastrukturschicht) vom Controller (Präsentationsschicht) wie den Code des Refactorings aufzurufen.

image.png

Daher ist es notwendig, mit der Entwicklung fortzufahren und gleichzeitig eine bestimmte Menge an Codegeruch zuzulassen.

** Wenn Sie jedoch von Anfang an an die Architektur denken, müssen Sie die Regeln dieser Architektur befolgen, damit das Schreiben von Code eng wird. Grundsätzlich sollten Sie also von Anfang an an die Architektur denken. Einige Entwickler sagen, dass sie dies nicht tun. ** ** **

Daher sollte das Team überlegen, welche Art von Entwicklungsmethode angewendet werden soll, und die Entwicklungsregeln festlegen.

Zusammenfassung

Die faule Klasse wurde überarbeitet.

Danke bis zum Ende.

Referenz

Recommended Posts

Code Geruch Refactoring [faule Klasse]
Refactoring von Codegerüchen [Feature Neid]
Code Geruch Refactoring 1. [lange Methode]
Java-Quellcode zum Lesen der Klasse java.lang.Math