Download ppt - Å Lytte til koden

Transcript
Page 1: Å Lytte til koden

www.steria.no

© Steria

Å Lytte til koden

Johannes Brodwall, Chief scientist, SteriaStatkraft 16. april, 2010

Du kan lytte til koden

Page 2: Å Lytte til koden

www.steria.no

21.04.23 2

Hva er god programmering?

Hva er et godt program?

Page 3: Å Lytte til koden

www.steria.no

21.04.23 3

God navngiving?

Små metoder?

Testdekning?

Ingenting overflødig?

God ansvarsdeling?

Bruksorientering?

Bruk av patterns?

Bruk av objekter?

Rammeverk?

Page 4: Å Lytte til koden

www.steria.no 21.04.23 4

• Å bli en bedre utvikler• Seks prinsipper for godt design

• Oppsummering av prinsippet• Video (fingers crossed!)• Hva annet kommer fram?

• Oppsummering

Page 5: Å Lytte til koden

www.steria.no 21.04.23 5

God utvikling krever trening

Page 6: Å Lytte til koden

www.steria.no 21.04.23 6

Kode kata

http://jhannes.blip.tv/jhannes.blip.tv/file/3487566/

Page 7: Å Lytte til koden

www.steria.no 21.04.23 7

Test-drevet utvikling

Page 8: Å Lytte til koden

www.steria.no 21.04.23 8

Evolusjonært design

Page 9: Å Lytte til koden

www.steria.no 21.04.23 9

Hvordan blir en web-applikasjon uten up-

front design?

Page 10: Å Lytte til koden

www.steria.no 21.04.23 10

Prinsipper

Page 11: Å Lytte til koden

www.steria.no 21.04.23 11

Prinsipp #1:Spesifiser utenfra og inn

jhannes.blip.tv/file/3487399/(10 min)

github.com/jhannes/java-ee-spike-kata/tree/1-outside-in

Page 12: Å Lytte til koden

www.steria.no 21.04.23 12

Hva så dere?

Ende-til-ende-test (treg)Jetty, WebDriver

Page 13: Å Lytte til koden

www.steria.no 21.04.23 13

Prinsipp #2:Spesifiser oppførsel

jhannes.blip.tv/file/3487395/(6 min)

github.com/jhannes/java-ee-spike-kata/tree/2-1-servlet-test

Page 14: Å Lytte til koden

www.steria.no 21.04.23 14

Hva så dere?Mockito, FEST-assert

Beskriv formålet med testenFinkornete tester

github.com/jhannes/java-ee-spike-kata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/PersonServletTest.java

Page 15: Å Lytte til koden

www.steria.no 21.04.23 15

Prinsipp #3:Test tett på koden

jhannes.blip.tv/file/3487334/(5 min)

github.com/jhannes/java-ee-spike-kata/tree/3-equals-test

Page 16: Å Lytte til koden

www.steria.no 21.04.23 16

Hva så dere?Test av meningsløs funksjon?

Rask bytte mellom test og kode

github.com/jhannes/java-ee-spike-kata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/PersonTest.java

Page 17: Å Lytte til koden

www.steria.no 21.04.23 17

Prinsipp #4:Dyrk fram et API

jhannes.blip.tv/file/3487377/(8 min)

github.com/jhannes/java-ee-spike-kata/tree/4-search-for-people

Page 18: Å Lytte til koden

www.steria.no 21.04.23 18

(Implementer etterpå)

jhannes.blip.tv/file/3487456/(7 min)

github.com/jhannes/java-ee-spike-kata/tree/5-3-person-dao-test/

Page 19: Å Lytte til koden

www.steria.no 21.04.23 19

Hva så dere?Mocking av API før implementeringKode som trenger å refaktoreres!

(Never refactor on red!)

github.com/jhannes/java-ee-spike-kata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/PersonDao.java

Page 20: Å Lytte til koden

www.steria.no 21.04.23 20

Prinsipp #5:Dyrk fram struktur

jhannes.blip.tv/file/3487376/(3:20 min)

github.com/jhannes/java-ee-spike-kata/tree/5-2-refactoring

Page 21: Å Lytte til koden

www.steria.no 21.04.23 21

Hva så dere?Hadde allerede refactorer viewene

Masser koden med refactoring verktøy

github.com/jhannes/java-ee-spike-kata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/PersonServlet.java

Page 22: Å Lytte til koden

www.steria.no 21.04.23 22

Prinsipp #6:Det skal virke første

gang

jhannes.blip.tv/file/3487396/(5 min)

github.com/jhannes/java-ee-spike-kata/tree/6-getting-it-to-work

Page 23: Å Lytte til koden

www.steria.no 21.04.23 23

Hva så dere?Ende-til-ende test tester infrastrukturKoden virker første gang i browser

github.com/jhannes/java-ee-spike-kata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/PersonWebTest.java

Page 24: Å Lytte til koden

www.steria.no 21.04.23 24

Verktøy JUnit (http://junit.org) Jetty (http://www.mortbay.org) WebDriver (http://code.google.com/p/selenium) FEST-assert (http://easytesting.org/assert/) Mockito (http://mockito.org) Hibernate (http://hibernate.org)

Page 25: Å Lytte til koden

www.steria.no

21.04.23 25

Hva er god programmering?

Hva er et godt program?

Page 26: Å Lytte til koden

www.steria.no

21.04.23 26

#1: Bygg utenfra inn

#2: Spesifiser oppførsel#3: Test nær koden

#4: Dyrk fram API’et#5: Dyrk fram design

#6: Det skal virke første gang

Page 27: Å Lytte til koden

www.steria.no

Johannes BrodwallChief ScientistSteria, Norway

[email protected]://johannesbrodwall.comhttp://sterkblanding.nohttp://jhannes.blip.tv@jhannes

Takk for oppmerksomheten

www.steria.no


Recommended