A pattern it seems every generation needs to learn is that there are three phases to software development:
- Make it work.
- Make it work well.
- Make it work fast/efficiently.
The problem is that items 2 and 3 can be done almost indefinitely. Very often the first one is adequate, sometimes requiring one or two iterations that are constrained by development time.
Variations of this have existed since the 1970s. Variations include “Do the simplest thing that could possibly work”, and the often misunderstood 1974 quote “Premature optimization is the root of all evil." The full quote and paragraphs around it apply here, too. Programmers waste enormous amount of time thinking and worrying about non-critical parts of the program, but it is absolutely essential that they invest in the critical parts of the program. That's probably the case here, too. Don't worry about small efficiencies, unless you know they're actually a big efficiency. Usually the only way to know is to write it once, then measure where the actual critical parts are.
And it isn't even unique to programming. “Perfect is the enemy of good" is a quote that dates back centuries, with variations found in Shakespeare and other old writings.
Yes, wasting memory on redundant copies of something is wasteful. However, storing something in memory rather than computing it or reloading it is a frequent time/space tradeoff, so sometimes keeping things in memory when not strictly necessary is a good thing.
Does it work? If so, don't touch it unless you really need to, spend your limited time in more important areas first.