static/Shared methods
One of my co-workers is designing an enterprise software architecture and is finding that most of the method calls in classes that form the Business Facade layer are stateless. He is proposing, then, to use Shared methods (in VB.NET, or static methods in C#) as a coding standard.
My thinking is that this would increase the memory working set for the application as all these shared methods would instantiate an object on startup and never discard it. Is this correct? Are there other downsides? The advantage, he says, is that the coders don't have to instantiate the class to call the method - it simply reduces code.
What are the best practices around when to use static/Shared methods and when not to use them?