1 / 10

Nullobjekter

Siv Fjellkårstad USIT/SAUS. Nullobjekter. For å hindre NullPointerExceptions (NPE), skriver man ofte null-tester, evt. med alternativ funksjon / oppførsel når et objekt er null. Problemstilling.

Download Presentation

Nullobjekter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Siv Fjellkårstad USIT/SAUS Nullobjekter

  2. For å hindre NullPointerExceptions (NPE), skriver man ofte null-tester, evt. med alternativ funksjon / oppførsel når et objekt er null. Problemstilling Ofte trenger man å skrive de samme sjekkene flere ganger, noe som resulterer i duplikat kode. Dette ansett som “bad smell” som forhindrer enkel refaktorisering.

  3. Mye null-testing fører til mer kode uoversiktlig kode inkonsistent kode (lett å introdusere små ulikheter i oppførsel når et objekt er null) kode som er vanskeligere å refaktorisere (flere steder der man må endre koden) ingen garanti for at man ikke glemmer å null-sjekke en variabel, og dermed få NPE.

  4. Objekt som brukes når man ikke har noe fornuftig objekt å returnere, men likevel ønsker å fjerne avsvaret for håndtering av nullfra klientkoden. Man skriver kode som returnerer et objektmed defaultverdier eller varianter av “ingenting” i stedet for å returnere null. Hva er et Null-objekt?

  5. Håndterer null på en transparent måte. Nullobjekter oppfører seg som vanlige objekter, og ekstra kode (utover koden til selve nullobjektet) er derfor ikke nødvendig. Hvis nullobjekter fører til vesentlig mer kode, er det “feil” å bruke dem. Egenskaper (1)

  6. Bruk av null-objekter forhindrer NullPointerExceptions (NPE) på en enkel måte. Nullobjekter er konstante; De endrer seg ikke. De kan derfor implementeres som Singletons. Nullobjekter kapsler inn hva som skal gjøres når objekttypen er satt til null, i stedet for at klienten avgjør hva som skal gjøres i hvert enkelt tilfelle. Egenskaper (2)

  7. Introduksjon av nullobjekteri koden • Introduksjon av nullobjekter i eksisterende kode kan føre til introduksjon av feil hvis man ikke er forsiktige. • Bruk av “Introduce Null Object”-refaktorisering under arbeidet forhindrer feil (se kildelisten for referanse til dette).

  8. Eksempel: NullIterator CreateIterator() kan returnere null eller Iterator, evt. NullIterator eller Iterator:

  9. Bøker “Refactoring. Improving the design of existing code” (Martin Fowler m.fl.) Head First Design Patterns (O'Reilly) Artikler “Null Object Design Pattern” (Jeffery Walker) “Null Object Pattern Revisited” (Dung X. Nguyen) “Introduce Null Object” http://today.java.net/today/2004/12/10/refactor.pdf http://citeseer.nj.nec.com/woolf96null.html http://www.mindspring.com/~mgrand/pattern_synopses.htm#Null%20Object The Null Object Pattern (Bobby Woolf)http://www.cs.oberlin.edu/~jwalker/refs/woolf.ps “Something for nothing” (Kevlin Henney) http://javareport.com/java/articleold.asp?id=25&mon=12&yr=1999 Introduce Null Object http://sourcemaking.com/refactoring/introduce-null-object Kilder

More Related