Toegegeven, het ontwerpen (en ontwikkelen) van een elegante (OO) architectuur (MVC, Front Controller, Data Transfer Objects enzovoort enzovoort) is iedere keer weer een aangelegenheid om van te watertanden. Maar niet zelden vraag ik mij vervolgens af in hoeverre de ontworpen architectuur daadwerkelijk noodzakelijk is. Schematisch/ontwerptechnisch ziet een architectuur die bestaat uit laag op laag en waarbij per laag het principe van 'separation of concern' wordt toegepast er prachtig uit en het voelt gewoon goed, wanneer alles vervolgens ook werkt, want wie heeft niet eens iets geschreven dat werkte, maar waarvan je daarna een aantal nachten niet goed sliep omdat je gruwelde van hoe het er onder de motorkap uitzag.
Toch is ook in dit verband de wet aan de orde: overdaad schaadt. Maar waar leg je de grens? De één legt hem hier, de ander daar. Er zijn geen allesomvattende absolute regels voor. Het is een kwestie van gevoel in combinatie met ervaring.
Hoe gaat een ieder hier om met het duel tussen elegantie versus noodzaak? Hoe weet je bijvoorbeeld dat het verstandig is om een Abstract Factory design pattern toe te passen voor de laag die met de database gaat communiceren, wanneer op het moment van ontwerpen niet aan de orde is, dat de database ooit zal worden vervangen of iets dergelijks?
Toch is ook in dit verband de wet aan de orde: overdaad schaadt. Maar waar leg je de grens? De één legt hem hier, de ander daar. Er zijn geen allesomvattende absolute regels voor. Het is een kwestie van gevoel in combinatie met ervaring.
Hoe gaat een ieder hier om met het duel tussen elegantie versus noodzaak? Hoe weet je bijvoorbeeld dat het verstandig is om een Abstract Factory design pattern toe te passen voor de laag die met de database gaat communiceren, wanneer op het moment van ontwerpen niet aan de orde is, dat de database ooit zal worden vervangen of iets dergelijks?