Некоторые из моих сотрудников широко используют концепцию модулей VB.net. К сожалению, я просто не понимаю. Я не вижу преимуществ в использовании модулей над общими классами. Я что-то упускаю? Когда было бы предпочтительнее использовать модуль? Или я (как это часто бывает на этом языке) «просто не понял»?Когда это хорошая идея использовать модуль vb.net
ответ
В VB.net модуль является общим классом. Когда они компилируются, им присваивается частный конструктор и методы, установленные для общего доступа.
Есть несколько случаев, когда вы вынуждены использовать модули компилятором (аналогично статическим классам на C#), например, для методов расширения, которые не могут быть созданы на стороне класса VB.Net.
Используя модули для ваших вспомогательных методов, вы упростите их позднее преобразовать в методы расширения и запретите другим добавлять какие-либо методы или конструкторы экземпляров.
Это говорит, что они зависают от VB6, которые не поддерживают полное программирование OO, и помимо автономных вспомогательных методов они не будут широко использоваться.
Полностью согласен. Единственный раз, когда я использую модули, - это когда мне нужно создавать методы расширения. Если мне нужно сделать статический класс, я вместо этого сделаю обычный класс со статическими методами и частным конструктором. Я уверен, что модули существуют только для обновления проектов VB6 до VB.Net, и поэтому я считаю их такими же, как REM - технически доступными, но не должны использоваться. –
@Chris: Если модули были каким-либо образом заменены или устарели или ненужны или излишни, они бы исчезли в использовании, как это делал REM. Вместо этого они теперь * необходимы *, чтобы использовать методы расширения, потому что модуль заполняет определенную нишу в VB.net, которая не заполняется никаким другим кодом кода, определенным языком. Они действительно будут лишними, если вы можете сказать «Public Shared Class Foo», но даже тогда это просто (уродливая) семантика - модуль и статический класс будут делать то же самое. Модули и классы IMO * должны быть объявлены по-разному, поскольку они имеют совершенно разные цели. – cHao
Я бы сказал, что «статические классы» являются уродливыми с языков, у которых не было понятия «модуль», - и помимо временного использования для переноса некоторого кода, * они *, что не следует использовать , – cHao
Модуль по существу совпадает с общим классом. Основное различие заключается в том, что в модуле нет необходимости в дополнительных «общих», потому что все неявно разделяется. Если у вас нет данных экземпляра и просто используется класс как своего рода пространство имен для функций, то лучше подумать (IMO) использовать модуль и сделать это понятным.
- 1. Использует * это хорошая идея?
- 2. Это хорошая идея использовать давний Thread.Sleep?
- 3. Когда это не очень хорошая идея?
- 4. Неявный оператор - когда это хорошая/плохая идея?
- 5. Когда это хорошая идея для очистки решения?
- 6. Когда это хорошая идея создать файл DLL
- 7. Это хорошая идея использовать WeakHashMap в ThreadLocal
- 8. Это хорошая идея использовать HTML5 сейчас?
- 9. Это хорошая идея использовать super() в Python?
- 10. Когда это хорошая идея использовать тег шаблона Django «with»?
- 11. Загрузите приложение, это хорошая идея?
- 12. переход от VB.net, ASP.net к Java это хорошая идея?
- 13. Центральный файл Typedefs.h - это хорошая идея?
- 14. AngularJS: хорошая идея использовать фреймы?
- 15. Когда используется __call__ хорошая идея?
- 16. Когда виртуальное наследование - хорошая идея?
- 17. Хорошая идея использовать sun.misc.BASE64Decoder/sun.misc.BASE64Encoder?
- 18. Когда это хорошая идея, чтобы вернуть указатель на структуру?
- 19. sqlite и hibernate - это хорошая идея?
- 20. .net веб-сайт BackgroundWorker. Это хорошая идея?
- 21. fopen: это хорошая идея оставить открытым или использовать буфер?
- 22. Это хорошая идея хранить изображения в localStorage?
- 23. Это хорошая идея сделать всю тему виджетной?
- 24. Динамическая типизация в JavaScript: Это хорошая идея?
- 25. Powerbuilder: это хорошая идея вызвать метод accepttext
- 26. Когда это хорошая идея отключить atime и diratime?
- 27. Когда это хорошая идея, чтобы дать ADT члену данных имени?
- 28. activerecord как модель, это хорошая идея?
- 29. Это хорошая идея использовать существование названного мьютекса в качестве индикатора?
- 30. Это хорошая идея использовать одноплатный компьютер в БПЛА-роботе?
Вы не можете объявить класс общедоступным в VB.Net. Модули довольно равны классам, в которых есть только общие члены и функции, частный конструктор и где только один экземпляр существует от начала приложения до конца. –