I know most people hate flat and long functions, and hate when code is not full of ISomethings.
The problem is that I guess my mind works in different way, and I always have problems with that type of code in any non-trivial solution.
So, since most of people enjoy explosive number of functions, can you describe what is the preferred method when dealing with unknown code-bases written in this way?
So far, for me, it looks like:
I have a object with interface IFoo, great, I need to extend it with method Bar1. Reverse lookup, we land nowhere, global search on who implements IFoo, it's Baz1, Baz2, Baz3, Baz4, an they are created by 3 class factories. So we start one by one, definition of Baz1, looks nice, but it's behavior is completely dependent on parameters used when object was created through class factory. And what's worse, it's just a wrapper around some other functionality of yet another class with IFooBar. Which again uses some internal implementation of classes with ISomethingElse, which again turns into an explosive graph.
How do you navigate all that effectively?