Ik ben aan een forse applicatie begonnen die lang en vele uitbreidingen mee moet gaan. Eén van de dingen die ik veel genoemd zie (en zelf eerder ook al tegenaan gelopen ben) is de (terechte) angst voor het aanpassen van onderdelen omdat dit zo onzichtbaar ver door kan werken: een bepaalde publieke method kan immers op vele plekken gebruikt worden..
Eén manier om hier mee om te gaan is het eenmalig goed bedenken wat van een method verwacht wordt en hierop te unit testen. Maar toch.. je komt regelmatig later nog iets tegen wat nog 'ongedefineerd' is gebleven en weet je dan echt zeker dat je programma nergens op dit onbedoelde (en wellicht ongewenste) gedrag voortbouwt?
Uitgaande van het idee van een 'class reference card' lijkt het me daarom handig in een database vast te leggen welke klassen met welke methods uit een andere klasse een contract hebben. Toch kom ik het systematisch bijhouden van zulke afhankelijkheden (of iets in die richting) nergens tegen. Het uitwerken van dergelijke kaarten zie ik in bijvoorbeeld RUP alleen genoemd tijdens het uitwerken van het (use-case) ontwerp, waarna ze voor mijn gevoel gedoemd zijn te verdwijnen in de stapel 'nauwelijks nog gebruikte laat staan actueel gehouden' krabbels.
Vandaar mijn vraag aan andere ontwikkelaars: is dit zinnig? Zo ja, zijn er 'standaard' methoden om dit te doen; is het bijvoorbeeld iets wat al in Java/PHP Documentor ingebakken zit (en daarom weinig specifieke aandacht krijgt op het net)? Of is dit een van die dingen die het 'nice to have' niveau echt niet overstijgt en waar je dus wellicht beter je tijd niet in kunt steken?
Eén manier om hier mee om te gaan is het eenmalig goed bedenken wat van een method verwacht wordt en hierop te unit testen. Maar toch.. je komt regelmatig later nog iets tegen wat nog 'ongedefineerd' is gebleven en weet je dan echt zeker dat je programma nergens op dit onbedoelde (en wellicht ongewenste) gedrag voortbouwt?
Uitgaande van het idee van een 'class reference card' lijkt het me daarom handig in een database vast te leggen welke klassen met welke methods uit een andere klasse een contract hebben. Toch kom ik het systematisch bijhouden van zulke afhankelijkheden (of iets in die richting) nergens tegen. Het uitwerken van dergelijke kaarten zie ik in bijvoorbeeld RUP alleen genoemd tijdens het uitwerken van het (use-case) ontwerp, waarna ze voor mijn gevoel gedoemd zijn te verdwijnen in de stapel 'nauwelijks nog gebruikte laat staan actueel gehouden' krabbels.
Vandaar mijn vraag aan andere ontwikkelaars: is dit zinnig? Zo ja, zijn er 'standaard' methoden om dit te doen; is het bijvoorbeeld iets wat al in Java/PHP Documentor ingebakken zit (en daarom weinig specifieke aandacht krijgt op het net)? Of is dit een van die dingen die het 'nice to have' niveau echt niet overstijgt en waar je dus wellicht beter je tijd niet in kunt steken?