Clean Code
Att ta hand om och förvalta existerande kod är ett särskilt kunskapsområde och förutsätter en viss stoisk attityd. Emellertid, finns det bra metoder för att stegvis omvandla programkod till att vara mer hanterbar.
Begreppet Clean Code innebär just att stegvis skapa renare kod, via refactorings, vilket det finns omfattande maskinellt stöd för i moderna utvecklingsmiljöer (IDE), såsom (min favorit) Intellij.
IDEA Intellij fyller för övrigt 20 år nu, vilket är rätt kul, eftersom den var den första att införa refactoring-actions. För egen del satt jag vid den här tiden på ett stort client-server Java EJB/Swing projekt, strax väster om centrala London. Då använde jag JBuilder som IDE. En förmiddag tipsade en kollega mig om ett nytt verktyg jag borde kolla in. Efter att testat IntelliJ under resten av den eftermiddagen, bytte jag IDE. Sedan dess har jag varit flitig användare med även sentida verktyg, såsom WebStorm för web/node.js utveckling och CLion för C/C++ utveckling.
Programkoden i detta projekt (väster om London) var en riktig röra. Så fort man fixat en bug på en plats, dök det upp en ny bugg eller två på någon annan plats. Min huvudsakliga uppgift kom i praktiken bli att städa upp både arkitektur/design och faktisk kod. Här kom det nya stödet för maskinell refactoring till stor hjälp.
Kruxet med att städa kod är att man måste också ha en klar idé om vad man vill ha i stället. Att extrahera ut ett kodblock och ersätta med en funktion, är ganska så rättframt. Men det räcker i regel inte. Man behöver också justera programdesignen. En bra målsättning då är att tillämpa väl beprövade designmönster (Patterns).
Här nedan har jag listat två kurser inom detta område. Den första handlar om designmönster (Design Patterns) och innehåller många konkreta körbara kodexempel, vilka illustrerar hur man kan implementera mönster. Kursens programmerings-övningar fördjupar insikterna i designmönster och hur dessa kan tillämpas på riktig programkod.
Den andra handlar om systematisk kodrensning (Clean Code). Som utgångspunkt för den kursen har jag min omfattande erfarenhet av programmering och flera fallstudier, såsom projektet i London med flera. Kursens städ-övningar bygger på kodfragment från riktiga projekt, visserligen med all domäninformation borttagen.