About
fv_2007
Agile innovative developer with deep insight into lots of platforms, technologies and protocols. Absolute “early adopter” in Web 2.0 technologies and more. Large professional network and eagerly talking about architecture, strategy, design patterns, restful ressources, object-oriented thinking and modeling languages such as PML. Special interest in programminglanguages constructs, knowledge on languages like Smalltalk, Erlang, Java, Clojure, Scala, Ruby... read more
Follow
Feedfavicon
Comments
Language

Beautiful code September 29, 2007 12:56 over 2 years ago

Hvad er smuk kode? Det er som denne form for syntaks kommer mere og mere op for tiden. Mange mennesker omtaler “beautyfull code” som noget der bare er i orden og som man som udvikler bør have respekt for. Når jeg hører den slags tænker jeg straks på deres kulturelle baggrund, hvilket tøj de går i og måske også hvilken type bil de har. Hvad opfatter hvem som værende smukt og hvilken betydning ligger der i det hele taget i ordet smukt?

Det var med stor ærefrygt og forventning jeg entrerer den lille sal på Jaoo hvori Marcel Molina skulle tale om smuk kode. Jeg er glad for at det var Marcel da han er utroligt fattet og har dybe forgreninger i den litterære verden. Som forventet begyndte Marcel at bygge et historiske fundament op over den klassiske filosofi. Han røre både Plato og Descartes indgang til det at være smuk. Hans konklution er at den reelle skønhed ligger i et samspil mellem tre aspekter som kan svinge i indbyrdes styrke.

De tre aspekter er:

Proportion udtrykker en relativ indbyrdes ligeligt fordelt størrelse og vægt. 
Integrity overholde det enlige formal. Tænkt på en hammer af glas. Selv om den 
er smuk lever den ikke helt op til det enlige formål. 
Klarhed er overblik og forståelse gennem mening og funktion.

Efter en indgående gennemgang af de tre grundelementer i den klassiske teori er vi ved at kunne overføre dette til et enligt forsøg med kode.

Som et eksempel viste Marcel en metode som han tidligere synes var smuk, ca. 25 linjer lang og temmelig svær at læse. Faktisk så svær at han skulle koncentrere sig en del bare for at læse koden. Ideen er nu at måle metode imod de tre aspekter som tilsammen udgør smuk kode efter klassisk filosofi, nemlig målt mod Proportion, Integritet og Klarhed.

Proportion. Fejl, måske er den for stor og kompliceret.
Integritet. Fejl, korrekt men benytter eksterne eller unødige biblioteker.
Klarhed. Fejl, Svært læsbar.

Marcel fortæller at han efter nogle år må skrive koden om bla. fordi den slet ikke performer og skaber deadlooks. Koden er enkel at skrive om, den fylder hurtigt kun 7 linjer kode og fungere fint uden eksterne biblioteker. Og vigtigst at alt, den deadlooker ikke hardwaren.

Proportion. Succes, den er velproportioneret.
Integritet. Succes. Den gør hvad der forventes og er meget performent.
Klarhed. Succes. Koden er letlæselig og udtrykker klart funktionen.

Jeg har aldrig tænkt at ligestille nogle linjer kode med samme menneskelige mekanisme som styre min sexdrive. Men jeg må indrømme at jeg selv ikke har bedre forslag når det gælder evnen til at bedømme kode. Hidtil har jeg bedømt kode udefra en klar forstilling om at de ting jeg har gjort og lært er de rigtige men det behøver jo langfra at være sandt.

Hvad synes du?


By Frank Vilhelmsen - 3 tags: rails jaoo conference - Add comment