I don't believe in robust design. I believe in effiency.
The two aren't mutually exclusive. In fact to practice the former you generally end up improving the latter, and to practice the latter alone is pure disaster.
I code everthing to work perfectly and effiently for the current situation of the program. If it ever comes up in the future and needs to be changed, then I will change for that situation. Having procs written to work in multiply situations lowers its effiency and performance.
Nobody is able to fully track all the processes of a complex program well enough to change brittle code from one working state to another working but brittle state, and succeed all or even some of the time. If you program this way you'll meet with mostly failure each time you make changes. And those failures won't always be apparent, leading to subtle bugs you have zero hope of scoping out simply because you didn't make it possible to do so.
If you know that usr needs to be used, and know how its going to work, then using it in that situation is completely valid.
Outside of a verb, usr never "needs" to be used. If you think that way in the first place, you're already performing an egregious mental error. The mere fact that you don't have enough information to work without usr is a giant clue that you need to send arguments to your proc for more information.
Lummox JR
Where's the logic in that?
As for you efficiency thing, it isn't less efficient. Because you'd waste at least a few minutes of your own time in thinking about EVERY THING IN YOUR GAME each time you add something. As opposed to a virtually 0 (unnoticable) lag.