Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“...

58

Transcript of Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“...

Page 1: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 2: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

2

Was überhaupt ist „Clean Code“?

Page 3: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 4: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 5: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 6: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 7: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 8: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 9: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 10: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 11: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 12: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 13: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 14: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 15: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

15

Was überhaupt ist „Clean Code“?

Page 16: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

16

Was immer „Uncle Bob“ darunter versteht!

Page 17: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

17

Für jeden etwas anderes!

Page 18: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

18

Das, was die anderen darunter verstehen!

Page 19: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

19

Das, was die anderen* darunter verstehen!

Page 20: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

20

Was bedeutet dies nun konkret?

Page 21: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

21

Page 22: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

22

Page 23: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

23

Page 24: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

24

Page 25: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

25

Page 26: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

26

Page 27: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

27

Page 28: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

28

Page 29: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

29

Page 30: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

30

Page 31: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

31

Page 32: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

32

Sue runs around the track twice, and John runs around the track four times more than Sue.

How many times does John run around the track?

Page 33: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 34: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 35: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 36: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

36

Beispiele

Page 37: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

37int i = 0;

if (x < y) {

} else {

}

f(i);

int i;

if (x < y) {

} else {

}

f(i);

Page 38: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

38

int i = 0;

if (x < y) {

i = x;

}

Page 39: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

39

for (int i = 0, n = s.length(); i < n; i++) {

}

int i = 0;

int n = s.length();

while (i < n) {

}

Page 40: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

40

if (3 == x) {

}

if (“xxx”.equals(x)) {

}

Page 41: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

41

if (3 == x) {

}

if (x == 3) {

}

if (“xxx”.equals(x)) {

}

if (x.equals(“xxx”)) {

}

Page 42: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

42// Check to see if the employee is eligible for full benefit

if ( (employee.flags & HOURLY_FLAG) && (employee.age > 65)) {

…}

––––––––––––––––––––––––––––––––––––––––––––––

if (employee.isEligibleForFullBenefits()) {…

}

Page 43: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

43f = open(…);

close(f);

––––––––––––––––––––––––––––––––––––––––––––––

f = open(…);

// Die Datei kann hier nicht geschlossen werden, da sie // asynchron bearbeitet wird. Es obliegt damit dem Service// für eine ordentliche Freigabe zu sorgen.

new Service(f).start();

Page 44: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

44

/** * The month of the year. */

private int monthOfTheYear;

Page 45: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

45

/** * The month of the year, expressed * as a value between 1 and 12. */

private int monthOfTheYear;

Page 46: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

46

// Some day, we'll write a stopping test that takes

// account of the asymmetry of the spacing of floating-

// point numbers below perfect powers of 2.

// 26 Sept 96 is not that day.

// So we use a symmetric test.

Page 47: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

47Was macht dieser Code?

// Requires positive x

static int stringSize(int x) {

for (int i = 0; ; i++)

if (x <= sizeTable[i])

return i + 1;

}

Page 48: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

48Was macht dieser Code?

final static int [ ] sizeTable = {

9, 99, 999, 9999, 99999, 999999, 9999999,

99999999, 999999999, Integer.MAX_VALUE

};

// Requires positive x

static int stringSize(int x) {

for (int i = 0; ; i++)

if (x <= sizeTable[i])

return i + 1;}

Page 49: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

49Was macht dieser Code?

// Fall thru to fast mode for smaller numbers

// assert i ≤ 65536;

for (;;) {

q = (i * 52429) (16 + 3);⋙

r = i − ((q 3) + (q 1));≪ ≪

buf[−−charPos] = digits[r];

i = q;

if (i == 0) break;

}

Page 50: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

50Was macht dieser Code?

// Fall thru to fast mode for smaller numbers

// assert i ≤ 65536;

for (;;) {

q = (i * 52429) (16 + 3);⋙

r = i − ((q 3) + (q 1)); ≪ ≪ // r = i − (q * 10)

buf[−−charPos] = digits[r];

i = q;

if (i == 0) break;

}

Page 51: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

51Was macht dieser Code?

// Fall thru to fast mode for smaller numbers

// assert i ≤ 65536;

for (;;) {

q = (i * 52429) (16 + 3);⋙ // q = i / 10

r = i − ((q 3) + (q 1)); ≪ ≪ // r = i − (q * 10)

buf[−−charPos] = digits[r];

i = q;

if (i == 0) break;

}

Page 52: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 53: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 54: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 55: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 56: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days

Clean Code Days 2018

56

Always code as if the guy

who ends up maintaining your code

will be a violent psychopath

who knows where you live.

Page 57: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days
Page 58: Was überhaupt ist „Clean Code“?€¦ · Clean Code Days 2018 16 Was immer „Uncle Bob“ darunter versteht! Clean Code Days 2018 17 Für jeden etwas anderes! Clean Code Days