Architecture – Static Methods in Business Layer to achieve data from DAL! Yes? No

Architecturenet

Some advice here,

I've run into a system where the DAL contents of hundreds of sql command calls are split up on a class per table. There are also a Business layer which get it's data from this DAL, recieving it further to other methods and layers in other places.

Nearly 100% of those Business Methods are pure forwarding of data. Few of them contain logic that affect the data (because the data are already sorted/evaluated or somewhat in the sql-commands/stored-procedures.

Now to the real question.
All of those methods in business layer are static.
This is easy because I can call them from everywhere without instantiation.

Is static methods really preferrable?
Why and how do you think?

I mean static methods need to be in heap and so far I really can't se the cosmetic profit because of it. I also feel the whole system is very hard to debug, especially now because the system has V E R Y high variety of response time, without many changes in load from users.

Best Answer

No, Static Methods are very difficult to mock or handle via dependency injection, which you probably want to testing purposes at least.