Sorry to be annoying, but here’s another example.
I’m writing some experimental code (on my own time and with no assurance I’ll have a chance to finish it) working with vocabularies. I’d like to load a concept. The current code for doing that is in app.js and is called by the routing table entry for the concept page. The loadConcept() function not only performs the ajax call, it also sets a number of observables–some having to do with the view, others with the data–and it also triggers further calls to get related data.
I shouldn’t change any of this because I might break something. Maybe what would be best is to make a service in some centralized place, use it myself, and hope that at some point app.js’s loadConcept call will be refactored to also use it. But we need to have these conversations about where such a call should go. So, in the meantime, I’ll make my own redundant code to do the same thing…and then if someone ever does attempt to centralize this function, they may have to deal with retrofitting both the app.js version and my new version to use it. Oy…