www.steria.no © Steria Å Lytte til koden Johannes Brodwall, Chief scientist, Steria Statkraft 16. april, 2010 Du kan lytte til koden
Jan 24, 2016
www.steria.no
© Steria
Å Lytte til koden
Johannes Brodwall, Chief scientist, SteriaStatkraft 16. april, 2010
Du kan lytte til koden
www.steria.no
21.04.23 2
Hva er god programmering?
Hva er et godt program?
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?
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
www.steria.no 21.04.23 5
God utvikling krever trening
www.steria.no 21.04.23 6
Kode kata
http://jhannes.blip.tv/jhannes.blip.tv/file/3487566/
www.steria.no 21.04.23 7
Test-drevet utvikling
www.steria.no 21.04.23 8
Evolusjonært design
www.steria.no 21.04.23 9
Hvordan blir en web-applikasjon uten up-
front design?
www.steria.no 21.04.23 10
Prinsipper
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
www.steria.no 21.04.23 12
Hva så dere?
Ende-til-ende-test (treg)Jetty, WebDriver
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
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
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
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
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
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/
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
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
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
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
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
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)
www.steria.no
21.04.23 25
Hva er god programmering?
Hva er et godt program?
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
www.steria.no
Johannes BrodwallChief ScientistSteria, Norway
[email protected]://johannesbrodwall.comhttp://sterkblanding.nohttp://jhannes.blip.tv@jhannes
Takk for oppmerksomheten
www.steria.no