Liskov Substitution Principle

 Følgende post omhandler Liskov Substitutions princippet fra S.O.L.I.D., som i en meget forenklet form kan udtrykkes: Nedarvede klasser skal kunne substituteres med deres base klasser (*) Det klassiske (og mest håndgribelige) eksempel på LSP er en overtrædelse: Såfremt du modellerer en firkant som et rektangel (med samme bredde / højde) overtræder du LSP, idet vi kan opfinde metoder = properties (egenskaber), der fungerer for et rektangel, men som ikke fungerer for en firkant. Tænk f.eks. på en metode som følger: int GetAr... [More]

Open Closed Principle

Følgende indlæg er en del af en en række posts som beskriver S.O.L.I.D. principperne. Open Closed Principle Du kender det måske - en nødvendig ændring trigger andre ændringer og før du har set dig om har et hav af klasser ændret sig og du er nødt til at genteste og re-deploye store dele af din applikation. Sådanne ændringer koster dyrt og indebærer en større risiko end hvis du kunne nøjes med at tilføje en enkelt eller to klasser med tilhørende unit tests. Så derfor, Open Clos... [More]

Single Responsibility Principle

I denne post behandler vi Single Responsibility Principle fra S.O.L.I.D. Måske har du set eller skrevet kode hvor flere ortogonale (ikke parallelle) ansvarsområder blev varetaget af een "mother-of-all" klasse? Sådanne monolitter er svære at vedligeholde fordi vi på et tidspunkt får behov for at udvide med præcist de features, som får kode-læsset til at tippe. Kig f.eks. på følgende klasser: public abstract class Statistics {     public abstract void CollectData();     public abstract double CalculateMe... [More]

S.O.L.I.D. Principperne

S.O.L.I.D. Principperne SOLID er betegnelsen for en række (OO) design principper som, når de anvendes sammen, hjælper til med at konstruere software, som kan overleve og vedligeholdes i adskillige år fremover. De fem principper som ligger til grund for S.O.L.I.D. er: Single Responsibility Principle (SRP) Open/Closed Principle (OCP) Liskov Substitution Principle (LSP) Interface Seggregation Principle (ISP) Dependency Inversion Principle (DIP) I efterfølgende artikler vil vi kigge på principperne hver for sig og slutteligt i et større persp... [More]