Federico Mena-Quintero
federico@gnome.org 2013
Miguel de Icaza
miguel@gnome.org
Morten Welinder
mortenw@gnome.org
Bra, läsbar kod gör att det går att underhålla projektet
Anders Jonsson
anders.jonsson@norsjovallen.se 2018

# Vikten av att skriva bra kod

GNOME är ett väldigt ambitiöst projekt inom fri programvara, och består av många programvarupaket som är mer eller mindre oberoende av varandra. En stor del av arbetet i GNOME utförs av frivilliga: även om det finns många som arbetar med GNOME som ett heltids- eller deltidsjobb, så är frivilliga fortfarande en stor andel av våra bidragsgivare. Programmerare kan komma och gå när som helst, och de kommer kunna ägna olika mängder tid till GNOME-projektet. Det ansvar folk har i ”verkliga livet” kan ändras, och detta kommer reflekteras i hur mycket tid de kan lägga ner på GNOME.

Programvaruutveckling tar mycket tid och stor möda i anspråk. Detta är orsaken till att de flesta deltidsfrivilliga inte kan starta stora projekt på egen hand; det är mycket enklare och mer belönande att bidra till befintliga projekt, då detta ger resultat som omedelbart är synliga och användbara.

Vi kan därför dra slutsatsen att det är mycket viktigt för befintliga projekt att göra det så enkelt som möjligt för folk att bidra till dem. Ett sätt att göra detta är genom att säkerställa att program är lätta att läsa, förstå, modifiera och underhålla.

Rörig kod är svårläst, och folk kan tappa intresset om de inte kan tolka vad koden försöker göra. Det är också viktigt att programmerare kan förstå koden snabbt så att de på kort tid kan börja bidra med felkorrigeringar och förbättringar. Källkod är en sorts kommunikation, och det är mer för människor än för datorer. Precis som få personer skulle vilja läsa en roman med stavfel, dålig grammatik och slarvig användning av skiljetecken, så bör programmerare sträva efter att skriva bra kod som är lätt att förstå och modifiera för andra.

Följande är några viktiga kvaliteter hos bra kod:

# Renhet

Ren kod är enkel att läsa med minimal ansträngning. Detta låter folk börja förstå den lätt. Detta inkluderar både kodstilen själv (parentesplacering, indentering, variabelnamn) och kodens faktiska kontrollflöde.

# Konsekvens

Konsekvent kod gör det lätt för folk att förstå hur ett program fungerar. Då man läser konsekvent kod formar man undermedvetet ett antal antaganden och förväntningar på hur koden fungerar, så det är lättare och säkrare att göra ändringar i den. Kod som ser ut på samma sätt på två ställen bör också fungera på samma sätt.

# Utökningsbarhet

Kod för allmänna syften är lättare att återanvända och modifiera än väldigt specifik kod med många hårdkodade antaganden. Då någon vill lägga till ny funktionalitet till ett program kommer det uppenbart vara lättare att göra detta om koden från början designats för att vara utökningsbar. Kod som inte har skrivits på detta sätt kan leda folk till att behöva implementera fula hack för att lägga till funktionalitet.

# Korrekthet

Slutligen låter kod som designats för att vara korrekt folk spendera mindre tid på att oroa sig om fel, och mer tid på att förbättra ett programs funktioner. Användare uppskattar korrekt kod, eftersom ingen tycker om programvara som kraschar. Kod som skrivits för korrekthet och säkerhet (d.v.s. kod som explicit försöker försäkra sig om att programmet förblir i ett konsekvent tillstånd) förhindrar många sorters fåniga fel.

# Bokreferenser

Code Complete, av Steve McConnell.

Refactoring: Improving the Design of Existing Code , av Martin Fowler.

Design Patterns: Elements of Reusable Object-Oriented Software, av Erich Gamma, Richard Helm, Ralph Johnson och John Vlissides.

Object-Oriented Design Heuristics, av Arthur Riel.