Unser Code soll schöner werden
Drogen, Alkohol, Mate - Abhängigkeiten gibt es überall. Auch in der Welt der Software. In diesem Vortrag geht es daher um Abhängigkeiten zwischen Klassen in OOP und ihr erfahrt warum ausgerechnet Hollywood all unsere Abhängigkeitsprobleme lösen kann. Am Ende des Vortrags könnt ihr dann nicht nur mit Software-Engineering-Buzzwords wie Dependency Injection und Inversion of Control um euch werfen, sondern wisst auch wie ihr euren Code auch modularer und weniger fehleranfällig gestaltet.
11. Kreditkarte: Fehler 1
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
java.lang.NullPointerException at CreditCard.java:42
Karl fragt lieber mal einen Kollegen.
14. Kreditkarte: Die API lügt
Database.connect(...);
OfflineQueue.start();
CreditCardProcessor.init(...);
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
22. Dependency Injection
class Main {
public static void main(String[] args){
Database db = new Database();
OfflineQueue oq = new OfflineQueue(db);
CreditCardProcessor cpp = new CreditCardProcessor(oq);
CreditCard cc = new CreditCard("12345678901234", ccp);
}
}
23. Schrittweiser Aufbau des
Objektgraphen
4 Gruppiert nach den Lebenszeiten der Objekte
4 möglich durch:
4 Dependency Injection Framworks
4 Assembler-Klassen selber bauen
25. Inversion of Control
console.log("test") // kein IoC
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello world'); // IoC
});
28. Zum Schluss der ganze Rest
4 Dependency Injection != Dependency Inversion
4 DI-Arten
4 Constructor Injection FTW
4 Setter Injection (manchmal unvermeidbar)
4 Interface Injection (machen manche DI-Container,
eher meiden)
4 Service Locator aka. Context
29. Quellen
4 Vorträge: Google Clean Code Talks (Youtube Playlist)
4 Artikel: Martin Fowler - "Inversion of Control
Containers and the Dependency Injection pattern"
4 Buch: Robert C. Martin - "Clean Code"