Tuesday, April 15, 2008

FAGBOK: "Effective Java Programming Language Guide" av Joshua Bloch

Joshua Bloch har vært en sentral aktør i utviklingen av Java hos Sun. Han jobber nå hos Google. Han er også kjent for foredrag om Java Puzzlers hvor han presenterer små programsnutter som ihvertfall ikke jeg pleier å tolke riktig....

I denne boken tar han for seg 51 regler for god Javaprogrammering. For hver slik regel så begynner han med en detaljert analyse av et problem eller behov. Det er tydelig at han har jobbet med Java hos Sun, fordi analysene hans går svært dypt. Han kan trekke trådene helt tilbake til hva som har vært planen bak en mekanisme og hvordan den har blitt i praksis.
Etter denne analysen så presenterer han sin foretrukne løsning. Han gir detaljerte og gode forklaringer som jeg han funnet svært matnyttige.

Bokes kapitler og det jeg likte best:

Creating and Destroying Objects:
Jeg likte spesielt om hvordan man lager singletons, bruk av factorymetoder istedet for konstruktorer og hvordan finalizers egentlig virker

Methods Common to All Objects:
Veldig nyttig gjennomgang av hashCode, equals og toString.

Classes and Interfaces:
Jeg likte best diskusjonen om a bruke composition istedet for arv.

Substitutes for C Constructs:
Skulle ønske at jeg hadde lest dette da jeg begynte å kode Java. Burde være obligatorisk stoff for alle som er vant til C/C++.

Methods:
Mange nyttige tips, spesielt likte jeg "defensive copying" for å unngå farer når man jobber med muterbare objekter.

General programming:
Navnestandarder, optimalisering, variabelscope...

Exceptions:
Glimrende analyse av hvilke situasjoner som skal håndteres med exceptions. Og når man bruker checked vs unchecked exceptions.

Threads:
Masse nyttig stoff om synkronisering.

Serialization:
Spesielt nyttig om readResolve.


Men husk at dette er bare det som jeg likte best. Det er masse andre interessante punkter.


Den beste måten for meg å forbedre meg som Javaprogrammerer er å jobbe med folk som kan mere enn meg som som er flinke til å hjelpe og forklare (keb og affen). Den nest beste er å lese denne boken. Jeg har fått en serie med aha-opplevelser og jeg har sett gode løsninger på problemer som jeg har jobbet med.

Jeg har lest første utgave av boken. Second Edition kommer snart, så kanskje det er lurt å vente. Eller lese begge to. Jeg kommer ihvertfall til å kjøpe Second Edition når den dukker opp.

Kan kjøpes på play.com.

Amazon sier:
Working solutions to programming challenges faced by Java developers on a daily basis, revealing what to do to produce clear, robust and efficient code. Include rules in short essay form, and the author's 'war stories,' giving advice and insights into nuances of the language.



Terningkast 6

4 comments:

lre said...

Ikke lest den før nå!??! :p
Hadde jeg bare visst det før...

Men på tråder kommer du bedre ut med
Java Concurrency in Practice.

(og hvorfor må jeg bruke IE for å poste...?)

Hans Chr said...

Enig, det er litt pinlig. Men bedre sent enn aldri.

Boken du nevner står på leselisten. Hørte flere foredrag av Brian Goetz på Serverside i Las Vegas. Han var konferansens høydepunkt for meg.

Rart at du må bruke IE. Jeg bruker Firefox uten problemer.

Alf said...

Funker fint med Opera!

Lærdommen i denne boken er utrolig viktig. Når man ikke følger best practices (og prosjektets kodestil), så blir koden vanskelig å lese og ofte buggy. Det er kostbart i lengden...

Må si du leser mye bøker om dagen HC, imponert!

Alf said...

BTW, Uncle Bob og co i Object Mentor holder på å skrive en veldig interessant bok, som nok dekker mye av det samme:

http://blog.objectmentor.com/articles/2008/04/08/clean-code-whew