Flere og flere maskiner, apparater og funktioner bliver afhængige af god softwarekode.
Der findes selvfølgelig software-kode i computere og smartphones, men efterhånden også i biler, køleskabe, ure og rigtigt mange af de øvrige genstande, som vi omgiver os med.
Software-kode er imidlertid ikke 'bare' software-kode, for der findes god kode og dårlig kode.
Begge dele kan sådan set udføre de tænkte opgaver, og spørger man udviklerne, kan der være stor forskel på opfattelsen af god og dårlig kode.
Nogle ting er udviklerne dog enige om, når det gælder velskrevet kode.
Her kommer der otte ting, som kendetegner velskrevet kode ifølge udviklere, der har diskuteret emnet i forskellige debatforaer.
1: Det skal virke
Vel ikke den store overraskelse, men lad os alligevel tage det med her: Software bliver skrevet alene for at løse en opgave og udføre en funktion.
En del udviklere mener, at det siger sig selv, mens andre specifikt nævner, at det primære for al god kode er, at det virker.
Fra debatforaerne:
"Det vigtigste er kode, der virker."
"Den eneste måleparameter, der betyder noget: En bruger skal kunne bruge softwaren."
"Smuk, læsbar, testbar og vedligeholdelsesvenlig kode, som ikke lever op til forretningens behov, er stadig en fiasko."
2: Skal være nem at læse
Udviklerne er ret enige om, at velskrevet kode skal være nem at læse og forstå for andre udviklere, som derfor ikke behøver bruge masser af tid og anstrengelser på at trænge ned i kodens betydning og funktioner, når den skal vedligeholdes, udvides eller genanvendes.
Det kræver, at der er styr på ting som navngivning og klar control-flow, ligesom det ofte kræver masser af grundige kommentarer og bemærkninger til den skrevne kode.
Fra debatforaerne:
"Gode kode skal fremfor alt være læsbar. Rigtig god kode kræver ikke kommentarer til at forklare selv de mindste detaljer, men kun de store ting som tilgang og nuancer. Når man læser god kode, kan man nemt følge flow of control."
"Jo hurtigere nogen kan kigge på den og forstå den, jo hurtigere kan applikationen bevæge sig fremad."
"Der er egentlig ikke noget andet kriterium, end hvor hurtigt du kan forstå koden."
3: Den skal være testbar
Software-udviklerne er generelt enige om, at god kode skal kunne testes i programmet.
Det vil sige, at højkvalitets-kode skal skrives på en måde, så det bliver muligt at skrive automatiske test ind for at sikre, at hver komponent i koden virker som det skal.
Fra debatforaerne:
"Gode kode er altid vel-testet."
"Jeg vil altid kigge efter 'testability'."
"Der er mange fordele ved unit-test, og de er normalt et tegn på god kode-kvalitet."
4: Den skal være nem at vedligeholde
Der kan findes bugs i næsten al kode - uanset hvor velskrevet den er. Og bugs skal repareres, og koden lappes.
Der kan være meget stor forskel på, hvor svært det er at modificere koden. Det afhænger blandt andet af læsbarheden, kodens kompleksitet og en række andre ting.
Fra debatforaerne:
"Al kode skal vedligeholdes. Der er ingen grund til at gøre den opgave mere svær end højst nødvendigt."
"Jeg har set rigtig grim kode, som ikke desto mindre var nem at vedligeholde, og jeg har set smuk kode, som var nødt til at blive smidt ud og genskrevet fra scratch."
"'Maintainability' gør hele forskellen mellem funktionsduelig kode og fantastisk kode."
5: Skal være behagelig at kigge på
Kodens udseende har sådan set ikke noget at gøre med, hvordan den fungerer: Grim kode kan køre fantastisk, og smuk kode kan køre dårligt.
Men for udviklerne kan det gøre en forskel, om en kode er grim eller pæn at kigge på.
For god brug af formattering som mellemrum, indrykning og store bogstaver og tegn kan gøre et software-program nemmere og mere behagelig at læse og dermed at forstå.
Fra debatforaerne:
"God kode skal være ordentligt formatteret og overholde konventioner fremfor at være et stort usammenhængende rod."
"Kode, der ser godt ud, er næsten altid af god kvalitet. Sådan bør det logisk set ikke være, men sådan er det altså."
6: Skal være nem at ændre i
Der er ofte brug for at ændre, udvide eller genbruge et stykke kode, og god kode bør skrives, så disse opgaver er nemme at udføre.
Samtidig mener udviklerne, at det er et kvalitets-parameter, at man kan ændre i en kode uden at det skaber en række af utilsigtede følge-effekter andre steder i funktionaliteterne, som så efterfølgende skal rettes.
Fra debatforaerne:
"Man ved faktisk ikke, hvor god en kode er, før man har forsøgt at ændre den."
"Gode kode er meget nem at udvide eller modificere og meget svær at ødelægge, når man gør det."
7: Den skal være simpel
Software-kode er ofte skrevet til at kunne udføre komplekse opgaver, men den bedst skrevne kode skal være simpel og så enkel som mulig.
Det vil sige, at der ikke skal være dybe loops i koden, ingen store 'hvis/eller'-funktioner ligesom metoder, funktioner og de forskellige kode-blokke skal være korte og fokuserede.
Fra debatforaerne:
"Der er dokumenteret sammenhæng mellem kode-kompleksitet og antal bugs."
"Ingen uendelige rækker af muligheder. Hvert abstraktionslag skal være så simpel, at man husker den helhed, som det indgår i."
"Hver funktion skal gøre præcis én ting."
9: Den skal være effektiv
For nogle udviklere gælder det, at god kode skal være hurtig og forbruge minimale system-ressourcer.
Fra debatforaerne:
"Hastighed er ikke nødvendigvis en indikator på god kode, men god kode bør aldrig være unødvendig langsom eller forbrugende."
"Generelt opfatter jeg den hurtigste kode som den bedste kode, selv om den godt kan være mindre læsbar."
Hvad synes du kendetegner god kode? Giv dit besyv med i debatfeltet herunder.