Separating Dimensions for Simplicity
In many situations interesting software ideas are about making something which combines many different inputs in a dynamic and flexible way. For example what if on LogiLogi a very well rated logi were shown missing some tags while a fair one was available with all the tags the user requested ?
While in principle interesting, the problem with such - and many simmilar ideas in software - is that they increase complexity by mixing concerns. The class looking up the logis will now also need to know about the scores, and thus about peergroups, while before the first class could fetch all the logis for as many tags as possible, and then pass them on to the next where the scores were compared for the user's peergroup.
Mixing dimenisions both increases the posibillities for bugs and makes it harder to split an application up into separate services.