This idea comes up in painting. The rule of thumb is that it's done when there's nothing left to add; when adding the next thing does not provide much more value value than it costs in terms complexity.
With coding, it seems like it's much more difficult question to answer.