Clean Code Developer Initiative
5 Grade erleichtern das Lernen
- Rot
- Orange
- Gelb
- Grün
- Blau
Je ca. 8 Prinzipien
& Praktiken
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
2009
Erste CCD School Trainings
http://ccd-school.de
Slide 9
Slide 9 text
CCD School Trainings
5 Tage Training
4 Wochen Pause mit Hausaufgabe
5 Tage Training
Slide 10
Slide 10 text
CCD School Trainings
5 Tage Training
4 Wochen Pause mit Hausaufgabe
5 Tage Training
6-10 Einzeltage
4 Wochen Pausen mit Hausaufgaben
Slide 11
Slide 11 text
2010
dotnetpro Dojo
Seitdem in jedem Heft:
- eine neue Übungsaufgabe
- meine Lösung zum Vormonat
Aktuell: 89 Aufgaben mit Lösung
Slide 12
Slide 12 text
CCD School Trainings
Erkenntnis:
In den Code Reviews zeigen sich
Verletzungen der Prinzipien
Unser Ziel:
Ein methodisches Vorgehen
entwickeln
Slide 13
Slide 13 text
2010
Injection Based Components (IBC)
Entwurf mit Abhängigkeits-
diagrammen
System-Umwelt-Diagramm
(Softwarezelle)
Featurestreams
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
2011
Flow Design
und
Event Based Components (EBC)
Entwurf mit Datenflüssen
Implementation mit Events und
Methoden
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
var zerlegenInZeichenfolgen =
new ZerlegenInZeichenfolgen();
var zeichenfolgenTrennen =
new ZeichenfolgenTrennen();
var zusammenfassenZuZeilen =
new ZusammenfassenZuZeilen();
var zusammenfassenZuText =
new ZusammenfassenZuText();
zerlegenInZeichenfolgen.Out_Result +=
zeichenfolgenTrennen.In_Process;
zeichenfolgenTrennen.Out_Result +=
zusammenfassenZuZeilen.In_Process;
zusammenfassenZuZeilen.Out_Result +=
zusammenfassenZuText.In_Process;
zusammenfassenZuText.Out_Result += text => Out_Result(text);
Event
Methode
Slide 21
Slide 21 text
2011
EBC Tooling
Flow in XML notieren,
Codegenerator, Visualisierung
Slide 22
Slide 22 text
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
2012
Flow Runtime NPantaRhei
Flow als String notieren,
Verdrahtung per Konvention
Parallelisierung per
Konfiguration möglich
Debugging schwer nachvollziehbar
public IEnumerable Start() {
var filename = EnvironmentProvider.Hole_Dateiname();
var text = TextdateiProvider.Lese_Text(filename);
textspeicher.Setze_Text(text);
var size = seitengröße.Hole_Fenstergröße();
var umbrochener_text =
Textanalyse.Umbreche_Text(text, size.Width);
var seite = blättern.Extrahiere_erste_Seite(
umbrochener_text, size.Height);
return seite;
}
Slide 30
Slide 30 text
2013
IOSP / PoMO / IODA
Die wichtigsten Prinzipien.
Principle of Mutual
Oblivion (PoMO)
Prinzip der
gegenseitigen
Nichtbeachtung
Slide 33
Slide 33 text
Integration
Operation
Data
Integration Operation
Data API (IODA)
API
Slide 34
Slide 34 text
Nextlevel
- Softwareuniversum
- System-Umwelt-Diagramm
- Domänenzerlegung (Anforderungen)
- Flow Design für den Entwurf
- IOSP/PoMO/IODA
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Rolle Ressource
System
Portal Provider
Domänenlogik
Slide 38
Slide 38 text
Domänenzerlegung: Dialoge und Interaktionen
Slide 39
Slide 39 text
Entwurf der obersten Ebene
Slide 40
Slide 40 text
Verfeinerung der Entwürfe
Slide 41
Slide 41 text
public bool[,] Initialize() {
var world = gameOfLife.CreateEmptyWorld();
state.Put(world);
return world;
}
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
public void CellChanged(int x, int y) {
var world = state.Get();
var newWorld = gameOfLife.ToggleCellAt(world, x, y);
state.Put(newWorld);
}
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
public void Start(Action onUpdate) {
timerProvider.Start(() => {
var world = state.Get();
var newWorld = gameOfLife.Evolution(world);
state.Put(newWorld);
synchronization.Sync(() => {
onUpdate(newWorld);
});
});
}
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
public void Stop() {
timerProvider.Stop();
}
Slide 48
Slide 48 text
Fazit
Clean Code entsteht nur durch
methodisches Vorgehen
Slide 49
Slide 49 text
Fazit
Clean Code entsteht nur durch
methodisches Vorgehen
Anforderungen müssen zerlegt werden
(Slicing, Domänenzerlegung)
Slide 50
Slide 50 text
Fazit
Clean Code entsteht nur durch
methodisches Vorgehen
Anforderungen müssen zerlegt werden
(Slicing, Domänenzerlegung)
Entwurf der Lösung vor der Umsetzung
ist notwendig (Flow Design)