Fachkonzept: SoC - Separation of Concerns
Ähnlich wie DRY ist Separation of Concerns (kurz: SoC, deutsch: eigentlich Trennung von Bedenken, besser aber: Trennung von Interessen) ein Fachkonzept, das Code besser wartbar und verständlich machen soll.
Betrachten wir noch einmal die beiden Code-Beispiele aus dem letzten Fachkonzept, die beide die gleiche Funktion zeichnen:
void setup() {
size(300, 150);
}
void draw() {
background(255);
strokeWeight(3);
stroke(0);
for (float i = 0; i < width; i += 5) {
point(i, sin(i / 10) * 10 + height / 2);
}
}
void setup() {
size(300, 150);
}
void draw() {
background(255);
strokeWeight(3);
stroke(0);
for (float i = 0; i < width; i += 5) {
point(i, meinSinus(i) + height / 2);
}
}
float meinSinus(float x) {
return sin(x / 10) * 10;
}
Im zweiten Beispiel ist ganz klar ersichtlich, welche mathematische Funktion gezeichnet werden soll, nämlich $f(x)=10\cdot sin(\frac{x}{10})$. Somit sind die Anliegen klar getrennt: Die draw()
-Methode zeichnet eine Funktion, und die meinSinus(x)
-Funktion stellt die mathematische Funktion dar. Im ersten Beispiel waren die beiden Anliegen vermischt.
Insgesamt sollte ein Programmierer verschiedene Dinge tun, um ein Programm gut wartbar zu machen, nämlich1):
beschreiben, was berechnet werden soll
die Berechnungssequenz in kleinen Schritte organisieren
und die Speicherverwaltung während der Berechnung organisieren
Punkt 3 macht Java zum Glück automatisch für uns. Also müssen wir nur die Punkte 1 und 2 einhalten, um dem SoC-Prinzip zu entsprechen.