Is it considered an acceptable practice to use Modules instead of Classes with Shared member functions in VB.NET?
I tend to avoid Modules, because they feel like leftover remains from Visual Basic 6.0 and don't really seem to fit in anymore. On the other hand, there doesn't seem to be much difference between using a Module and a Class with only Shared members. It's not that often that I really have much need for either, but sometimes there are situations where they present a simple solution.
I'm curious to hear whether you have any opinion or preferences one way or the other.
Module
s are VB counterparts to C# static
classes. When your class is designed solely for helper functions and extension methods and you don't want to allow inheritance and instantiation, you use a Module
.
By the way, using Module
is not really subjective and it's not deprecated. Indeed you must use a Module
when it's appropriate. .NET Framework itself does it many times (System.Linq.Enumerable
, for instance). To declare an extension method, it's required to use Module
s.