Det är aldrig fel att begrunda programmeringens grunder. På Dunite ställer vi oss hela tiden frågan hur kan vår kod bli bättre? Ett sätt är såklart genom att anamma vissa principer och de grundregler som ligger oss varmt om hjärtat är SOLID-principerna, där varje bokstav står för en särskild klokhet med avseende på kod, nedreducerad till en kort mening.

Man ska t.ex inte ändra en klass hur som helst, men om en klass nu måste ändras så ska det bara finnas ett skäl till att den ändras. Så lyder första rådet, ”Single responsibility”-principen. En klass ska egentligen bara göra en sak. Hellre många små lättbegripliga klasser istället för en enda stor monsterklass, med andra ord. Om en klass har ett enda syfte så blir det genast mer naturligt att ändra den av en enda anledning, inte olika.

En förlängning av detta är ”Open/Closed”-principen, som gör gällande att en klass ska vara öpen för utökning, men samtidigt låst för modifiering. Man ska helt enkelt kunna utöka en klass beteende utan att behöva göra mastodontingrepp på själva klassen. Det är här som välgenomtänkta designval i form av arv och polyformism kommer in i bilden, vilket gör eventuell utökning av klassen till en barnlek. Och när man pratar om arv så är den tredje rekommendationen, ”Liskov Substitution”-principen, extra viktig att beakta. Principen säger att man ska kunna ersätta en subklass med dess förälder utan några som helst problem, eller snarare att programmets funktion inte bör påverkas av att subklassens objekt används istället för huvudklassens objekt.

De två sista principerna, ”Interface Segregation”-principen och ”Dependency Inversion”-pricipen, förstärker egentligen bara det som nämnts ovan, i synnerhet ”Single responsibility”-resonemanget, som förespråkar rena, fina och flexibla klasser framför överkomplicerade intrasslade klasstrukturer. Här är det gränssnitten som ska vara så okomplicerade som möjligt, och tanken är att man håller metoder som inte används borta om man håller isär gränssnitten. Grundtanken att koppla ifrån beroenden klasser emellan och istället koppla dem till abstrakta gränssnitt borde genomsyra all bra kod.

Happy coding, som man brukar säga!