Clean Code - The Interface Segregation Principle

De naam van een interface heeft meer te maken met de gebruiker van die interface dan met de classes die de interface implementeren. Stel je een class Switch voor. Deze class kan bijvoorbeeld een licht bedienen. Aan en uit. Deze communicatie verloopt via een interface. De Switch class mot ook bijvoorbeeld tv's en ventilatoren aan en uit kunnen zetten. Een goede naam voor deze interface zou zijn 'Switchable'. De naam heeft dus meer te maken met de gebruiker van de interface dan met de classes die de interface implementeren.

Het probleem dat dit principe oplost is het probleem van fat classes. Dit betekent zeer waarschijnlijk dat er ook veel verschillende componenten gebruik maken van zo'n class. Een wijziging in een fat class heeft zeer waarschijnlijk invloed op één of misschien twee componenten, niet de overige componenten. Om dit op te lossen kan er per component een interface worden geintroduceerd. Vervolgens kunnen al deze interfaces weer worden geimplementeerd door de base class. De componenten communiceren dan niet meer via de concrete class, maar via hun specifieke interface.

Het principe vertelt ook dat je niet op methodes en properties mag leunen die je niet nodig heb. Maak hier dan twee of meerdere interfaces van.

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren