Tuesday, May 02, 2006

FAGBOK: "Code Reading" av Diomidis Spinellis

En god ide som dessverre går på trynet!

Den gode ideen er å lese andres kode for å lære av deres måte å løse problemer og for å unngå deres feil. Forfatteren henter eksemplene sine fra åpen kildekode. Dette er også i prinsippet en god ide; det er jo mye mer realistisk å se på virkelig, kjørende kode enn på eksempler.

Men dessverre så velger han mest merkelig og kryptisk C-kode fra Unix-varianter som NetBSD. Kode som bruker masse pekeraritmetikk og har veldig fokus på effektivitet. Så mye av boken blir nærmeste et kurs i lure triks i C. Og i dag virker det litt vel gammelmodig.

Og så får han det problemet som mange forfattere har: hvordan skal han fylle en hel bok? Så han skriver om alt mulig: lister og trestrukturer, objektorientering, prosjektorganisering, versjonskontroll, make, c-preprosessor osv osv. Mange morsomme ting, men alt blir en uorganisert røre.

Kan kjøpes på Play.com.

Amazon sier:

If you are a programmer, you need this book.

  • You've got a day to add a new feature in a 34,000-line program: Where do you start? Page 333
  • How can you understand and simplify an inscrutable piece of code? Page 39
  • Where do you start when disentangling a complicated build process? Page 167
  • How do you comprehend code that appears to be doing five things in parallel? Page 132

You may read code because you have to--to fix it, inspect it, or improve it. You may read code the way an engineer examines a machine--to discover what makes it tick. Or you may read code because you are scavenging--looking for material to reuse.

Code-reading requires its own set of skills, and the ability to determine which technique you use when is crucial. In this indispensable book, Diomidis Spinellis uses more than 600 real-world examples to show you how to identify good (and bad) code: how to read it, what to look for, and how to use this knowledge to improve your own code.

Fact: If you make a habit of reading good code, you will write better code yourself.

Terningkast 2

No comments: