Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
IPDSnelting
pse-tipps
Commits
311bd5a0
Commit
311bd5a0
authored
Dec 20, 2018
by
andreas.fried
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add design lessons from the Odyssee.
parent
91961a0f
Pipeline
#35846
passed with stage
in 58 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
0 deletions
+16
-0
tipps.tex
tipps.tex
+16
-0
No files found.
tipps.tex
View file @
311bd5a0
...
...
@@ -481,11 +481,21 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
auch nur diese eine Klasse betrifft.
Allgemein sollte ein Klasse/Paket möglichst wenig interne Details
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?
Abhängigkeiten zu fremden Schnittstellen
machen spätere Änderungen aufwendiger.
Im UML-Diagramm sollten möglichst wenig Verbindungen
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
}
.
\item
Starke Kohäsion innerhalb von Klasse/Paket?
Wenn Methoden einer Klasse eigentlich unabhängig voneinander sind,
...
...
@@ -521,6 +531,12 @@ Paradoxe Anforderungen zeigen, dass gutes Design eine Kunst ist.
Das impliziert:
Eine Klasse/Paket/Methode sollte für sich verständlich sein,
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}
Ä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