Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
IPDSnelting
pse-tipps
Commits
311bd5a0
Commit
311bd5a0
authored
Dec 20, 2018
by
andreas.fried
Browse files
Add design lessons from the Odyssee.
parent
91961a0f
Pipeline
#35846
passed with stage
in 58 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
tipps.tex
View file @
311bd5a0
...
@@ -481,11 +481,21 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
...
@@ -481,11 +481,21 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
auch nur diese eine Klasse betrifft.
auch nur diese eine Klasse betrifft.
Allgemein sollte ein Klasse/Paket möglichst wenig interne Details
Allgemein sollte ein Klasse/Paket möglichst wenig interne Details
nach außen preisgeben.
nach außen preisgeben.
\item
Dazu gehört: Behalten Klassen ihre internen Datenstrukturen für sich?
Eine Klasse, die eine Liste von Objekten verwaltet,
sollte selbst Methoden zum Hinzufügen, Löschen, u.
\,
s.
\,
w.
\
bereitstellen.
Sie sollte
\emph
{
keine
}
veränderbare Referenz auf die Liste nach außen geben
und ihre Aufrufer die Liste verändern lassen.
Für Java siehe z.
\,
B.~
\href
{
https://docs.oracle.com/javase/10/docs/api/java/util/Collection.html#unmodview
}{
Unmodifiable View Collections
}
.
\item
Lose Koppelung zwischen Klassen/Paketen?
\item
Lose Koppelung zwischen Klassen/Paketen?
Abhängigkeiten zu fremden Schnittstellen
Abhängigkeiten zu fremden Schnittstellen
machen spätere Änderungen aufwendiger.
machen spätere Änderungen aufwendiger.
Im UML-Diagramm sollten möglichst wenig Verbindungen
Im UML-Diagramm sollten möglichst wenig Verbindungen
zwischen Klassen zu sehen sein.
zwischen Klassen zu sehen sein.
\item
Keine indirekten Abhängigkeiten?
Wenn eine Abhängigkeit zwischen Objekten sein muss, soll sie direkt und explizit sein.
Sich stattdessen an Referenzen entlangzuhangeln sieht auf dem Papier aus wie lose Kopplung,
koppelt aber tatsächlich mehr Klassen enger aneinander.
Siehe auch
\href
{
http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/general-formulation.html
}{
Law of Demeter
}
.
Siehe auch
\href
{
http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/general-formulation.html
}{
Law of Demeter
}
.
\item
Starke Kohäsion innerhalb von Klasse/Paket?
\item
Starke Kohäsion innerhalb von Klasse/Paket?
Wenn Methoden einer Klasse eigentlich unabhängig voneinander sind,
Wenn Methoden einer Klasse eigentlich unabhängig voneinander sind,
...
@@ -521,6 +531,12 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
...
@@ -521,6 +531,12 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
Das impliziert:
Das impliziert:
Eine Klasse/Paket/Methode sollte für sich verständlich sein,
Eine Klasse/Paket/Methode sollte für sich verständlich sein,
ohne dass Kontext notwendig ist.
ohne dass Kontext notwendig ist.
\item
Sind Methoden frei von unerwarteten Nebeneffekten?
Eine Methode, die Informationen aus einem Objekt zurückgibt,
sollte nichts Wesentliches am Objektzustand verändern.
Auch eine Methode, die dazu dient, den Objektzustand zu verändern,
sollte nur eine überschaubare Änderung durchführen.
Siehe auch
\href
{
https://en.wikipedia.org/wiki/Command
%E2%80%93query_separation}{Command-query separation}
\end{itemize}
\end{itemize}
Ähnlich zu den üblichen Entwurfsmustern gibt es auch Anti-Entwurfsmuster.
Ähnlich zu den üblichen Entwurfsmustern gibt es auch Anti-Entwurfsmuster.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment