JDD2014: Co Twój kod mówi do Ciebie - Mariusz Sieraczkiewicz

Post on 01-Jul-2015

145 views 2 download

description

Czasami wystarczy spojrzenie okiem, żeby zobaczyć, że coś jest nie tak. Nawet takie proste rzeczy w kodzie jak nazwy, sygnatury metod, składowe klasy, klasy, pakiety do nas krzyczą: to nie tak powinno być. Jednak dla dużej części programistów jest to język nieznany. Będziemy się uczyć tego, jak rozpoznawać, co kod nam podpowiada i jak zacząć korzystać z tych podpowiedzi. Jak na bazie prostych przesłanek w kodzie wywnioskować, co zrobić z kodem. Pokażemy wiele technik, których nie znajdziesz w książkach albo takich, które giną w gąszczu mało istotnych zagadnień programowania. Technik których matką jest doświadczenie i praca z dziesiątkami systemów produkcyjnych.

Transcript of JDD2014: Co Twój kod mówi do Ciebie - Mariusz Sieraczkiewicz

1

Między młotem a kowadłem

Pragmatym a ideologia

2

3

Co twój mózg na programowanie?

Chunks

Short-Term memory

Long-Term memory

Law of proximity

4

Long-Term memory

Discrimination net

5

Uproszczony model przetwarzania informacji

6

Cognitive load

Reduntant information Split attention effect

Expert vs. Novice

7

Analogie – naturalny pociąg do wzorca Copy-Paste

ify

switch

polimorfizm

wzorce nazw metod (np. find*)

wzorce projektowe

Reguły inżynierii oprogramowania odpowiadają bardziej temu jak

działa mózg niż regułom matematycznym

8

1. Operatory zamień na słowa 2. Klamerkę "{" po IF zamień na "then„ 3. Rozbij wieloczłonowe nazwy na pojedyncze

wyrazy 4. Z wyrażeń przypisania bierz pod uwagę tylko

prawą stronę, lewą ignoruj 5. Każdy wiersz kodu traktuj jako osobne

zdanie zakończone kropką. 6. Tak powstały tekst wklej do syntezatora

mowy 7. Jeśli to, co słyszysz (bez patrzenia na

kod), jest w pełni zrozumiałe, to kod jest czytelny :)

Test Ivony

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

Charakterystyka dobrej nazwy metody

class Node

28

Nazwy a odpowiedzialność

class Node

29

Nazwy a odpowiedzialność

30

Długie nazwy mogą być konsekwencją nieużywania kontekstu lub zbyt dużych klas/metod

Co tu jest nie tak?

31

32

FLUENT NAMING AND READING ENABLERS

33

34

• Płynne czytanie

– controlSumFor(pesel)

– lastDigitOf(pesel)

– shouldBeDoneWith(lowProbability)

Fluent naming

35

36

Reading enablers

37

Bibiloteki Reading enablers

• Wykorzystuj mechanizmy poznawcze swojego mózgu

• Zadawaj sobie pytanie: Co na to by powiedziała Ivona? ;-)

• Wprowadzaj Domain/Value Object • Spłaszczaj warunki • Komponuj metody • Wykorzystuj kontekst • A może Null Object? • Lokalnie używaj fluent naming

38

Podsumowanie

? 39