Hur blev det så här?
• Prototyper som får liv• Time to market är viktigt, så vi har ofta bråttom
• Flyttskadad kod• Ibland måste man ta över saker som andra gjort
• Kod som åldras – sällan med värdighet• Om du inte alltid sköter om din kod så blir den dålig
4
Identifiera dålig kod
• Vi kan inte fixa allt• Se till att fixa det värsta först
• Var uppmärksam på tecken på dålig kod• Höga estimat för att införa ny funktionalitet• Leta efter områden med hög komplexitet• Lyssna på vad utvecklarna säger om koden• Titta på felrapporter
5
Analys av felrapporter
• Felrapporter kan användas till mycket mer än att lösa ett specifikt problem
• Hur många fel har vi? • Vad är det för sorts fel vi har?
• I vilken fas uppstod felet?• I vilket område har vi felen?• Att försöka hålla en övergripande koll på alla
felrapporter är nyttigt
6
Miljö
• Utan fungerande verktyg kan ingen jobba• Börja med att se till att förutsättningarna finns
• Byggmiljö• Varje bygge måste lyckas• Byggtiderna måste vara korta
• Versionshanteringssystem• Analysverktyg• Felrapportering
• Tänk på både intern och extern användning
7
Att lära sig produkten
• Det är OK att läsa kod• Funktionstester säger ofta mer om produkten än
designdokumentation• Ibland är det svårt att identifiera rätt väg framåt
• Gör prototyper för att lära sig mer• Dela upp produkten i bitar och håll en seminareserie
• Kan kombineras med ett modulansvar
8
Kodgranskningar
• Kodgranskning kan ske på flera nivåer• Parprogrammering• Kompisgranskning• Expertgruppsgranskning
• I en produkt full av dåliga exempel är ett viktigt syfte att styra kulturen
• Se till att bra exempel sprids
9
Skriva om eller rätta till?
• I början är det lätt att vilja skriva om all dålig kod• Om man inte förstår koden, hur kan man skriva om
den?• Hitta områden med stora skillnader i komplexitet mellan
problemet och lösningen• 10000 rader för att flytta filer mellan två datorer
• Se till att du inte tappar någon funktionalitet• Om koden är dålig så är säkert testerna dåliga
10
Funktionstester
• Bra funktionstester är utmärkt stöd vid omimplementering
• Automatisera funktionstesterna• Regressionstester kan snabbt hitta problem
• Se till att du testar rätt saker• Använd rätt villkor för pass/fail
11
Unittester
• Unittesta gammal kod är sällan vettigt• Detta får inte spilla över till ny kod
• Bra designade unittester hjälper till vid refactoring• Det är dock lätt att göra fel
12
Förändra gammal eller ärvd kod (eng. Legacy)
• Leta efter förändringsställen• Hitta testpunkter• Bryt isär beroenden• Skriv tester• Förändra
13
Kultur
• Hålla motivationen uppe• Jobba för små segrar
• Bryta dåliga designmönster• En organisation med god smak
• Scoutregeln• Lämna alltid koden lite bättre än när du fick den
15
Mod, tillit, förtroende och ansvar
• Mod hos organisationen• Tillit från kunden och användaren• Förtroende för individen• Ansvar hos utvecklaren
16
Litteraturtips
• Working Effectively with Legacy CodeMichael C. FeathersPrentice Hall 2005, ISBN 0-13-117705-2
• Kod, mer kod och lite till…
17
Top Related