[JAVA] Ich habe viel über "Prinzipien des Systemdesigns, die auf diesem Gebiet nützlich sind" gelernt und sie daher zusammengefasst ~ Kapitel 1 ~
Kennen Sie die Prinzipien des Systemdesigns?
Dieser Artikel ist ein Artikel, der zusammenfasst, was ich aus dem Lesen von "Prinzipien des Systemdesigns, das vor Ort nützlich ist" gelernt habe und was bei der Arbeit nützlich zu sein scheint.
Es ist nur eine Zusammenfassung, und ich habe die Teile weggelassen, die ich nicht erklären kann. Wenn Sie es also richtig verstehen wollen, lesen Sie bitte das Buch!
[Grundsätze des Systemdesigns, die vor Ort nützlich sind](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E5%BD%B9%E7%AB % 8B% E3% 81% A4% E3% 82% B7% E3% 82% B9% E3% 83% 86% E3% 83% A0% E8% A8% AD% E8% A8% 88% E3% 81% AE % E5% 8E% 9F% E5% 89% 87-% E5% A4% 89% E6% 9B% B4% E3% 82% 92% E6% A5% BD% E3% 81% A7% E5% AE% 89% E5% 85% A8% E3% 81% AB% E3% 81% 99% E3% 82% 8B% E3% 82% AA% E3% 83% 96% E3% 82% B8% E3% 82% A7% E3% 82% AF% E3% 83% 88% E6% 8C% 87% E5% 90% 91% E3% 81% AE% E5% AE% 9F% E8% B7% B5% E6% 8A% 80% E6% B3% 95% E5% A2% 97% E7% 94% B0-% E4% BA% A8 / dp / 477419087X)
Die Person, die dieses Buch geschrieben hat
Der Autor ist Toru Masuda, der auch am Anwendungsdesign und der Entwicklung mit domänengesteuertem Design beteiligt ist.
Es gab viele Folien im Zusammenhang mit domänengesteuertem Design in der Folienfreigabe.
Masuda-sans Dia-Freigabe
Kapitel 1 "Klein und leicht zu verstehen"
Warum Softwareänderungen so schwierig sind
――Der Grund, warum Nebenwirkungen und unerwartete Probleme aufgrund von Softwaremodifikationen und -änderungen auftreten, liegt darin, dass ein Problem mit dem Design (= Quellcode) vorliegt.
- Ein Programm, das schwer zu ändern ist, weist drei Merkmale auf
- Lange Methode (schwer zu verstehen)
- Große Klasse (schwer zu identifizieren, den Einflussbereich beim Ändern)
- Viele Argumente (es ist schwierig, den Einflussbereich beim Ändern anzugeben)
――Das Ganze wird durch die Überlappung kleiner Korrekturen kompliziert.
Wie schreibe ich, um das Ändern des Programms zu erleichtern
--Verwenden Sie einen beschreibenden Namen
- Vermeiden Sie die Verwendung von Abkürzungen und nicht übereinstimmenden Namen
// Bad
int a;
int qty;
return qty * up;
// Good
int quantity;
return quantity * unitPrice;
- Fügen Sie für jede Codeeinheit (Prozesseinheit) eine Leerzeile ein.
- Bereiten Sie Variablen (= Variablen zur Erklärung) für jeden Zweck vor (Vermeiden Sie destruktive Zuweisung ((destruktive Zuweisung ist eine Schreibweise, indem Sie eine Variable verwenden und die Zuweisung wiederholen)))
// Bad
int price = quantity * unitPrice; //Menge x Stückpreis
if (price < 3000)
price += 500; //Versand
price = price * taxRate(); //Betrag inklusive Steuern
// Good
int basePrice = quantity * unitPrice; //Menge x Stückpreis
int shippingCost = 0; //Versand
if (basePrice < 3000)
shippingCost = 500;
int ItemPrice = ... //Betrag inklusive Steuern
- Unabhängig als Methode (Verdienste sind wie folgt)
- Es wird einfacher, den Effekt von Änderungen in der Methode zu sperren
--Details werden in der Methode beschrieben, sodass der aufrufende Code sauber ist.
- Der Name der Methode erleichtert das Verständnis der Absicht des Codes
int basePrice = quantity * unitPrice; //Menge x Stückpreis
int shippingCost = shippingConst(basePrice) //Schneiden Sie die Versandberechnung auf eine andere Methode aus
int shippingCost(int basePrice) {
...
}
- Beseitigen Sie doppelten Code in verschiedenen Klassen
--Erstellen Sie eine Klasse (Domänenobjekt), die jedem Geschäftsinteresse entspricht
――Zum Beispiel können Sie das Änderungsziel und den Einflussbereich innerhalb des Objekts einschränken, indem Sie die Versandkosten in die Versandklasse gruppieren.
Machen Sie es in einer kleinen Klasse leicht verständlich und sicher
- Die im Geschäft behandelten Werte stimmen möglicherweise nicht mit den im Basisdatentyp behandelten Werten überein.
――Zum Beispiel: Selbst wenn der Stückpreis im Geschäft bis zu 100 Millionen Yen beträgt, können Sie mit int 2,1 Milliarden Yen bis plus 2,1 Milliarden Yen verarbeiten.
- Sie können abnormale Werte verhindern, indem Sie eine eigene Klasse (Wertobjekt) erstellen, damit Sie korrekte Werte für Geschäftszwecke verarbeiten können ((die Methode zum Erstellen einer dedizierten Klasse für die Behandlung von Werten wird als Wertobjekt bezeichnet)). es kann
- Wenn Sie beispielsweise eine Mengenmenge erstellen, die sich auf Mengen spezialisiert hat, und eine Telefonklasse, die sich auf Telefonnummern spezialisiert hat, können Sie abnormale Werte verhindern und gleichzeitig die Absicht des Codes klären.
- Wertobjekte unveränderlich machen (bei Bedarf verschiedene Objekte erstellen)
- Weil das Überschreiben von Variablen unerwartete Nebenwirkungen verursachen kann
- Verwenden Sie Typen, um Ihren Code klar und sicher zu machen
--Verwenden Sie Typen, damit der Compiler Fehler findet
// Bad
int amount(int unitPrice , int quantity) {
... //Ein Kompilierungsfehler tritt auch dann nicht auf, wenn die Reihenfolge der Übergabe von unitPrice und Menge falsch ist.
}
// Good
Money amount(Money unitPrice, Quantity quantity) {
... //Wenn Sie den Einheitspreis und die Menge in der falschen Reihenfolge übergeben, tritt ein Kompilierungsfehler auf.
}
Kapitel 1 Zusammenfassung
- Die Grundlagen der Code-Organisation sind Namen und Absätze
--Kurzmethoden, organisieren Sie Ihren Code in kleinen Klassen
- Machen wir es einfach, Wertobjekte zu verstehen und zu sichern
- Durch das Abgleichen von Klassennamen und Methodennamen mit Geschäftsbegriffen wird das Programm leichter verständlich und leichter zu ändern.