Siv fjellk rstad usit saus
Download
1 / 10

Nullobjekter - PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Nullobjekter' - kiayada-lara


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


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 null-tester, evt. med alternativ funksjon / oppførsel når et objekt er null.

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 returnere, men likevel ønsker å 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 nullobjekter på en enkel måte. i 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 på en enkel måte.

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


Kilder

Bøker på en enkel måte.

“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


ad