Siv fjellk rstad usit saus
This presentation is the property of its rightful owner.
Sponsored Links
1 / 10

Nullobjekter PowerPoint PPT Presentation


  • 50 Views
  • Uploaded on
  • Presentation posted in: General

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Siv fjellk rstad usit saus

Siv Fjellkårstad

USIT/SAUS

Nullobjekter


Nullobjekter

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.


Mye null testing f rer til

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.


Hva er et null objekt

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?


Egenskaper 1

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)


Egenskaper 2

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)


Introduksjon av nullobjekter i koden

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).


Eksempel nulliterator

Eksempel: NullIterator

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


Kilder

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


  • Login