In evaluating the work of an outsourcing company, I have found that they have a propensity for dividing work into as many classes as possible, each one being testable. In some ways this seems commendable, but they are taking it to an extreme and no one seems able to control them.
Recently I found what should have been a simple UI piece that I would have implemented as at most 3 classes (one for data, one for controller, one for view), they had in fact broken up into some 20 classes (e.g. base class and multiple derived classes) and protocols, requiring in the end about 70 source files (Objective C .m files and .h headers) which included a test for each and every part, even the tiniest piece. Their code, despite the elaborate testing code, barely works and is constantly breaking.
They justify this with vague talk about SOLID and/or the "massive class" problem.
This code is already written. No one but them was allowed to design it. I can criticize implementation, but not really influence design.
So what is a good strategy, other than seeking better employment, for dealing with Outsourcing Companies Gone Wild where their numerous engineers expand simple projects as much as possible and as long as possible in this way, rendering them complicated and vast?