Door
Ozzie PHP
op 19-06-2014 23:42
gewijzigd op 19-06-2014 23:43
4.064 views
Ola,
Een vraag. Ik heb 3 classes die dezelfde abstracte class extenden.
Nu heb ik een verplcihte method foo(). Bij 2 van deze classes is de invulling van die method foo() precies hetzelfde. Bij de 3e class zit er een verschil in.
Wat is nu gebruikelijker?
optie 1)
We bouwen de overkoepelende foo() method van class 1 en 2 als abstracte method in de abstracte class. Class 1 en 2 gebruiken dus de foo() method uit de abstracte class. Class 3 krijgt z'n eigen foo() method.
optie 2)
In de abstracte class declareren we een lege abstracte foo() method en iedere class vult zelf deze method in. In class 1 en 2 is deze method exact hetzelfde.
Maar die rtrim in de Slasher class heeft geen zin, want die slash voeg je vervolgens weer toe... en dan voeg je 'm in de parent nogmaals toe (als je die dus zou aanpassen). Dat werkt dus niet. Eigenlijk zou je dus als je de parent dan aanpast, de method in die afwijkende class compleet moeten verwijderen en dan klopt alles weer, maar ja... daar moet je dan wel aan denken. En dat is het gevaar van op deze manier code spreiden. Ik ga er nog ff over nadenken...
[offtopic]Maar er hoort ook geen (back)slash in de namespace...[/offtopic]
>> En dat is het gevaar van op deze manier code spreiden.
Dat gevaar bestaat altijd, niet alleen bij een abstract class, maar bij elke extends en bij elke implements. Kortom, bij elke afhankelijkheid dus.
Als je dat risico wilt minimaliseren, is de uiterste consequentie dat je elke afhankelijkheid uitsluit en alleen nog volledig autonome klassen gebruikt. Dat lijkt me al helemaal niet juist, dus wat "risk management" betreft, is het dan toch kiezen uit twee kwaden.
[offtopic]
Die backslash heb je nodig om te kunnen vergelijken. Heb ik je al eens verteld.
[/offtopic]
>> Als je dat risico wilt minimaliseren, is de uiterste consequentie dat je elke afhankelijkheid uitsluit en alleen nog volledig autonome klassen gebruikt. Dat lijkt me al helemaal niet juist, dus wat "risk management" betreft, is het dan toch kiezen uit twee kwaden.
Ik snap wat je bedoelt. Heb je ook een punt inderdaad. Nogmaals, ik ga er even over denken wat het slimst is in dit soort situaties.
Als iemand nog ideeën hierover heeft hoor ik het natuurlijk graag.