Перейти до вмісту

Visual Basic

Матеріал з K2 ERP Wiki

Visual Basic і формування звітів

Це оптимізує: Приклад:

Console.WriteLine("Animal sound")

Приклад MSTest:

Return _name
  • Windows-застосунки;
  • форми;
  • кнопки;
  • бізнес-утиліти;
  • desktop-програми;
  • автоматизацію Office;
  • внутрішні корпоративні інструменти;
  • scripts і макроси;
  • прості database-driven apps. Для підтримки краще поступово вводити:

Architecture

Приклад: End If Public Class Dog Legacy означає: desktop-застосунків забезпечується через Visual Basic застосовується для; так само реалізовано Windows Forms, внутрішніх бізнес-утиліт, legacy-систем, Office/VBA-спадщини, автоматизації, підтримки старого коду й деяких .NET-застосунків. Але для нової звітності краще розглядати централізований reporting layer, API, BI або web-based reports. Але Visual Basic зазвичай матиме consumption-only підхід і не буде розширюватися на нові workloads. Підхід до legacy VB-коду має бути обережним: спочатку зрозуміти, потім покривати тестами, потім змінювати. Visual Studio — головна IDE для Visual Basic. Це покращує сумісність із сучасними runtime APIs і користувачі можуть вибирати кращі overloads.== Visual Basic і API ==

Public Sub Add_ReturnsSum()

Тестування особливо важливе для legacy-систем перед міграцією.[1]

У desktop apps async оптимізує не блокувати UI thread.== Хороші практики ==

  • класи;
  • об’єкти;
  • інтерфейси;
  • generics;
  • LINQ;
  • async/await;
  • events;
  • properties;
  • exception handling;
  • Windows Forms;
  • .NET libraries;
  • Visual Studio tooling. Visual Basic має читабельний синтаксис.
  • підтримки існуючих VB.NET систем;
  • Windows Forms legacy apps;
  • Office/VBA automation;
  • внутрішніх desktop tools;
  • простих бізнес-утиліт;
  • підтримки старих процесів;
  • міграційних проєктів;
  • читання й розуміння старого коду;
  • швидких змін у вже існуючому VB-проєкті. # Для нових .NET-проєктів порівнювати VB із C#. Для важливих production-систем Access/VBA здатна бути ризиковим через обмеження масштабованості, безпеки й супроводу. У VB.NET застосовують, коли потрібно structured exception handling. Практичний висновок: Visual Basic не “мертвий”, але він стабільний, а не агресивно інноваційний. * SQL injection;
  • hardcoded passwords;
  • слабку авторизацію;
  • доступ до файлів;
  • небезпечні COM components;
  • старі libraries;
  • macros;
  • Office automation risks;
  • insecure connection strings;
  • відсутність logging;
  • права користувачів Windows;
  • outdated runtime. * .NET — платформа Microsoft для застосунків і бібліотек. * MSTest;
  • NUnit;
  • xUnit. {| class="wikitable"

Змінні оголошуються через Dim. Не варто робити великий refactoring без tests і backup. End Sub

Сильні сторони:
== Classes ==

Visual Basic здатна використовувати більшість .NET libraries. Visual Basic не виступає як ERP-системою. Тому дисципліна перевірок на Nothing дуже важлива. Це зменшує “магію” й робить поведінку коду передбачуванішою.<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">

== Interfaces ==

Visual Basic особливо тісно пов’язаний із Visual Studio, бо історично сила VB була не тільки в мові, а й у drag-and-drop розробці форм.== Visual Basic і ERP-системи ==
== Modules ==
 Public Overrides Sub Speak()

</div>

Catch ex As Exception

Visual Basic підтримує async/await. Це робить код схожим на структурований текст. VB6 був дуже популярним для Windows desktop-застосунків. Refactoring Visual Basic-коду здатна включати:

* фільтрації;
* сортування;
* групування;
* запитів до collections;
* Entity Framework;
* XML;
* data transformations. * '''VB.NET''' — Visual Basic для платформи .NET. # Виносити бізнес-логіку з UI forms. # Перевіряти hardcoded secrets. Public Property Name As String

* [[C Sharp]]
* [[PowerShell]]
* [[Python]]
* [[Go]]
* [[Розробка в K2 ERP]]
* [[Тестування коду]]
* [[API K2 ERP]]
* [[Інтеграції K2 ERP]]
* [[Звітність K2 ERP]]
* [[GitHub Copilot]]
* [[Cursor]]
* [[Tabnine]]
* [[Deep Learning]]
* [[Великі мовні моделі]]
* [[GPT]]
* [[Claude Models]]
* [[Штучний інтелект]]
* [[Генеративний AI]]

<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">
<pre>
У .NET 10 Visual Basic отримав compiler improvements. * internal tools;
* desktop utilities;
* legacy business apps;
* data entry forms;
* admin panels;
* Windows-only applications. End Namespace

У контексті K2 ERP Visual Basic здатна бути актуальним як:

Option Infer дає можливість компілятору виводити тип змінної. * Property — властивість класу.


Dim name As String = "Visual Basic"

'''Проста аналогія:''' Visual Basic — це мова, яка довго була “вхідними дверима” у програмування для бізнес-користувачів, аналітиків і Windows-розробників. * '''Refactoring''' — покращення структури коду без зміни поведінки. # Міграцію робити поетапно. Implements IReportService.GenerateReport

Dim name = "Visual Basic"

Visual Basic виступає як однією з трьох мов Microsoft у .NET разом із C# і F#.== Синтаксис Visual Basic ==

Для нових інтеграцій із Microsoft 365 часто краще розглядати Graph API, Power Automate або сучасні add-ins, але VBA досі живе в багатьох компаніях. Option Infer On

Microsoft.VisualBasic namespace містить типи й modules.== Visual Studio ==

* макросів;
* автоматизації Excel;
* звітів;
* обробки таблиць;
* форм;
* Office workflows. * '''LINQ''' — Language Integrated Query.== Refactoring ==

Обмеження:

* Excel;
* Word;
* Access;
* Outlook;
* PowerPoint. # Зберігати код у Git. * '''WinForms''' — скорочення від Windows Forms. * '''Migration''' — перенесення системи на іншу платформу, мову або архітектуру. * VB.NET projects;
* Windows Forms;
* .NET libraries;
* debugging;
* designers;
* IntelliSense;
* refactoring;
* testing;
* NuGet packages;
* Git integration. Console.WriteLine("Hello, Visual Basic")

* COM components;
* ActiveX controls;
* старі форми;
* database access;
* business logic;
* UI behavior;
* deployment;
* Windows APIs;
* third-party components;
* hidden assumptions;
* відсутність тестів. # Документувати критичні сценарії. Handles ButtonSave.Click
Потрібно перевіряти об’єкти перед використанням:
 Public Property Name As String
Потрібно контролювати:
COM-інтеграції можуть бути в:
<div style="background:#fff0f0;border-left:6px solid #eb5757;padding:14px 18px;margin:16px 0;border-radius:8px;">
'''Visual Basic .NET''' — це Visual Basic для платформи .NET. Міграція з VB6 на VB.NET або C# здатна бути складною, бо змінюється runtime, модель об’єктів, бібліотеки й технічна архітектура. * Excel reports;
* Access reports;
* data export;
* formatting;
* printing;
* Office templates. Private Sub ButtonSave_Click(sender As Object, e As EventArgs) _

Dim total = 100

End Class

Приклад:
Для нових .NET-проєктів частіше обирають C#. Function GenerateReport(reportId As Integer) As Byte()

 Where p.Price > 1000

# Уточнити, йдеться про VB.NET, VB6 чи VBA. Visual Basic підтримує LINQ. Для VB6 часто краще робити поетапну модернізацію:
Для старих VB6/VBA API-виклики теж можливі, але часто складніші й потребують COM/WinHTTP/XMLHTTP або wrapper. Для багатьох сценаріїв interfaces і composition можуть бути кращими.
Return a + b

Namespaces допомагають уникати конфліктів і підтримувати структуру великого проєкту. Catch ex As IOException

  • розбиття великих процедур;
  • виділення functions;
  • заміна глобальних змінних;
  • додавання tests;
  • увімкнення Option Strict;
  • видалення дублювання;
  • заміна On Error Resume Next;
  • покращення names;
  • розділення UI і бізнес-логіки;
  • поступова міграція на services;
  • заміна старих data access підходів. * VBScript — стара scripting-мова Windows із VB-подібним синтаксисом.

<pre> Interface описує контракт. # Не використовувати <code>On Error Resume Next</code> без крайньої потреби. VBA застосовується для в Microsoft Office: * невеликих баз даних; * форм; * внутрішніх інструментів; * швидких business apps; * legacy workflows.<ref>https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview</ref> Visual Basic-проєкти часто мають стару архітектуру: [[Категорія:Desktop]] Public Property Name As String Добра практика: Міграція з VB6 складніша, ніж міграція з VB.NET. * '''Option Explicit''' — конфігурація, яке вимагає оголошення змінних. Назва !! Що це Public Function FirstOrDefaultValue(Of T)(items As List(Of T)) As T == VBA == Select p Implements IReportService == Office automation == End Module Приклад ідеї: End Sub == Inheritance == == Properties == <div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;"> * бізнес-сутностей; * сервісів; * DTO; * forms; * models; * data access; * domain logic. * '''Async/Await''' — механізм асинхронного програмування.<pre> Приклади: == Legacy code == * Excel reports; * Word documents; * Outlook automation; * Access forms; * data import/export; * templates; * macros; * бухгалтерські таблиці; * внутрішні офісні процеси. Modules зручні для utility functions, але надмірне використання modules здатна привести до procedural spaghetti code.<TestClass> End Function Return items(0) Visual Basic здатна використовувати Entity Framework або Entity Framework Core для роботи з базами даних. # Перевіряти підтримку libraries і workloads. * паролі; * tokens; * персональні інформаційні дані без потреби; * повні фінансові документи без політики. Перед технічними рішеннями потрібно уточнити контекст. Core libraries .NET підтримуватимуть Visual Basic, а багато покращень .NET Runtime і libraries автоматизовано будуть корисні VB-користувачам. * '''ActiveX''' — технологія компонентів, часто пов’язана зі старими VB/COM-рішеннями. Dim count As Integer = 10 Приклад: * старі ERP/CRM-утиліти; * бухгалтерські програми; * внутрішні Windows tools; * ActiveX-компоненти; * COM-інтеграції; * старі форми; * database applications. Класи використовуються для: Для нових інтеграцій краще використовувати сучасний .NET або окремий backend-service.<ref>https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualbasic</ref> Dim text = File.ReadAllText("data.txt") </div> Приклад: Не варто логувати: '''Коротко:''' Visual Basic — це мова Microsoft із дуже читабельним синтаксисом. Visual Basic історично був популярним тому, що дозволяв оперативно створювати: VB.NET здатна викликати REST API. Приклад: WinForms підходить для: <pre> * додати Button; * додати TextBox; * додати DataGridView; * налаштувати properties; * підключити event handler. * '''Module''' — тип Visual Basic для shared procedures і helpers. * '''Legacy code''' — старий, але бізнес-критичний код. Сьогодні VB6 часто зустрічається в legacy-системах: Public Function Add(a As Integer, b As Integer) As Integer End Class End Function == LINQ == Але в бізнес-коді явні типи часто роблять код зрозумілішим. # Використовувати <code>Option Explicit On</code>. Microsoft Learn окремо описує Visual Basic documentation для .NET-розробників. # Не переписувати систему без бізнес-причини. Приклад: Це означає: Legacy не означає “поганий”. * '''Function''' — процедура, яка повертає значення. Переписуйте, якщо виступає як зрозуміла бізнес-причина: ризики, супровід, найм, інтеграції, безпека або дорожня карта розвитку. Ці технології схожі синтаксично, але це не одне й те саме.<ref>https://learn.microsoft.com/en-us/dotnet/visual-basic/</ref> End Sub == Дивіться так само == {| class="wikitable" Сценарії: * код давно функціонує; * він важливий для бізнесу; * його складно змінювати; * документації здатна не вистачати; * автори могли піти; * тести можуть бути відсутні; * залежності можуть бути старими. Сильні сторони == Джерела == Головна ідея Visual Basic — зробити програмування більш доступним, читабельним і наближеним до природної мови. Добре логувати: <pre> Visual Studio Designer дає можливість створювати форми через drag-and-drop. '''Не плутати:''' якщо користувач системи каже “Visual Basic”, він здатна мати на увазі VB.NET, VB6 або VBA.[[Категорія:VB6]] == Міграція з Visual Basic на C# == Він не веде обліковий облік сам по собі, не проводить документи й не керує складом без прикладної бізнес-логіки. Visual Basic особливо корисний для: * UI + business logic в одній формі; * SQL прямо в event handlers; * глобальні modules; * shared mutable state; * відсутність layers; * hidden dependencies. Dim customer As Customer = Nothing

Generic function:

Events

Приклад: |- | Visual Basic .NET / VB.NET || сучасна Visual Basic-мова для .NET |- | Visual Basic 6 / VB6 || класична стара Visual Basic-мова до .NET |- | VBA || Visual Basic for Applications, мова макросів в Office |- | VBScript || стара scripting-мова Windows, пов’язана з VB-синтаксисом |}

Visual Basic, VB.NET, VB6 і VBA

End Module

Але нову бізнес-логіку ERP краще будувати в основному технологічному стеку системи, а Visual Basic використовувати там, де це виправдано підтримкою старих процесів.== Коли Visual Basic здатна бути невдалим вибором ==

VBA корисний для:

Return New Byte() {}

Await Task.Delay(1000)
Public Function GenerateReport(reportId As Integer) As Byte() _

Приклад:

Console.WriteLine("Done")
Public Property Id As Integer
Public Property Price As Decimal

Це оптимізує уникати помилок через опечатки в назвах змінних. Get


Inheritance треба використовувати обережно. * '''Option Infer''' — конфігурація автоматичного виведення типів. '''Практичне правило:''' не переписуйте VB-систему тільки тому, що “VB старий”. ! Під час роботи з Visual Basic варто:

Офіційна документація Microsoft описує Visual Basic як об’єктно-орієнтовану мову програмування, яка дає можливість оперативно створювати type-safe .NET apps. End Sub

 MessageBox.Show("Saved")

== Типові помилки у Visual Basic-проєктах ==

End Class

* VB6 apps;
* Office automation;
* ActiveX controls;
* legacy ERP/CRM;
* desktop components;
* industrial software. # Робити code review навіть для legacy changes. '''критично:''' найбільший ризик старих VB-систем часто не в мові, а в архітектурі: hardcoded passwords, прямий доступ до бази, відсутність ролей, logs і тестів. * '''Sub''' — процедура без значення, що повертається. Visual Basic/VBA часто використовували для звітності:

 End Get

End Try

</div>
<div style="background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;">
[[Категорія:Microsoft]]

Dim isActive As Boolean = True

У legacy VB-системах часто зустрічаються старі технології доступу до даних: ADO, ADO.NET, typed DataSets, Access database, SQL Server. Сьогодні вона важлива насамперед для підтримки існуючих .NET/VB-систем, Windows Forms, Office/VBA-спадщини й бізнес-застосунків, які вже написані на VB. Мова !!== Windows Forms ==

Public Class Customer

== Variables ==

End Interface

names.Add("Anna")

Namespaces організовують код. Console.WriteLine("File error: " & ex.Message)

== Error handling ==

* System.IO;
* System.Net.Http;
* System.Text.Json;
* System.Data;
* System.Threading.Tasks;
* Microsoft.VisualBasic namespace;
* third-party NuGet packages. Окремо варто відзначити які підтримують Visual Basic runtime, string operations і інші VB-специфічні функції ERP. Properties можуть мати custom getter/setter:

Міграція COM-залежностей — одна зі складних частин модернізації VB6/VB.NET систем. Public Class CalculatorTests

 Console.WriteLine("Bark")
== Коли Visual Basic особливо корисний ==
If customer IsNot Nothing Then

У сучасному VB.NET краще використовувати <code>Try/Catch</code>, а не старий стиль <code>On Error Resume Next</code>. Для нових .NET-проєктів частіше обирають C#, а VB часто залишається для підтримки й еволюції існуючих систем.

Для звітності K2 ERP Visual Basic здатна бути доречним, якщо потрібно підтримувати старі Excel/VBA-звіти. Private _name As String

Public Async Function LoadDataAsync() As Task(Of String)

  • починається новий .NET backend;
  • потрібен ASP.NET Core cloud-native сервіс;
  • потрібен cross-platform UI;
  • потрібна велика community для найму;
  • потрібні найновіші .NET language features;
  • проєкт активно розвиватиметься багато років;
  • команда вже функціонує на C#;
  • потрібна AI/data engineering ERP-платформа;
  • потрібно створювати modern web frontend. Dim client As New HttpClient()

Methods у Visual Basic бувають Sub і Function. End Set Visual Basic підтримує класи. У бізнес-системах це небезпечно: програма здатна продовжити роботу після збою й пошкодити інформаційні дані або сформувати неправильний результат. Для нових .NET-проєктів варто серйозно розглядати C#, але для діючих VB-рішень часто розумніше не переписувати все, а поступово покращувати, тестувати й модернізувати.== Visual Basic у .NET 10 ==

== Designer ==
це мова програмування Microsoft із довгою історією, яка сьогодні найчастіше означає '''Visual Basic виступає ключовою рисою '''Visual Basic'''.NET''' або '''VB.NET''' — об’єктно-орієнтовану мову для платформи .NET.== Security ==
== Міграція з VB6 ==

Microsoft Access історично тісно пов’язаний із VBA. Visual Basic найкраще сприймати як мову підтримки, модернізації й еволюції існуючих бізнес-систем.== Visual Basic і Access ==

NuGet робить доступними багато .NET-бібліотек, але потрібно перевіряти сумісність із Visual Basic і конкретним типом проєкту. * Class — клас, SEO-опис об’єкта. * Visual Studio — основна IDE для Visual Basic.


<pre>

 End Class

<pre>
Він підтримує:
|-
| '''Visual Basic''' || читабельність, legacy VB/VBA-світ, Windows Forms, прості бізнес-застосунки
|-
| '''C#''' || активний дорожня карта розвитку, нові .NET workloads, ASP.NET Core, cloud, modern backend, ширша community
|}

== Практичний висновок ==


End Class

* команда вже функціонує на C#;
* потрібні нові .NET workloads;
* застосунок активно розвивається;
* VB-код складно підтримувати;
* потрібно залучати більше розробників;
* потрібен ASP.NET Core, cloud або modern backend;
* legacy architecture заважає розвитку. Public Overridable Sub Speak()

Option Strict On

Міграція на C# здатна бути доречною, якщо:

Але міграція не завжди потрібна.
  • мова має stable design, а не активний інноваційний дорожня карта розвитку;
  • нові workloads зазвичай не додаються;
  • C# має активнішу ecosystem і community;
  • VB6/VBA/VB.NET швидко плутати;
  • legacy-код часто має архітектурні й security-проблеми;
  • для нових cloud/backend/web-проєктів VB рідко виступає як першим вибором.== Logging ==

Пояснення термінів

Visual Basic .NET здатна використовувати NuGet packages. End Sub

Return "Done"

Event-driven programming була однією з причин популярності Visual Basic для desktop-застосунків.== NuGet ==

Microsoft documentation має окремий напрям Windows Forms apps для Visual Basic.== Visual Basic 6 == Visual Basic — важлива мова Microsoft із великою спадщиною в бізнес-застосунках, Windows Forms, Office automation і legacy-системах.[2]


== Option Strict ==
'''Function''' повертає значення:
Це зробило Visual Basic дуже популярним для швидкої розробки Windows desktop-застосунків.[[Категорія:VB.NET]]
 If items.Count = 0 Then
Dim names As New List(Of String)()

VBA не виступає як VB.NET, але синтаксис схожий. У старих Windows-системах Visual Basic часто працював із COM. '''Windows Forms''' або '''WinForms''' — класичний framework для desktop-застосунків Windows. # Для VB.NET вмикати <code>Option Strict On</code>. Dim response = Await client.GetStringAsync("https://api.example.com/items")

</div>
Try
Visual Basic і VBA часто використовують для Office automation. Sub Main()

Properties — стандартний спосіб описати інформаційні дані класу. * '''COM''' — Component Object Model, стара Windows component technology. Visual Basic і C# працюють на .NET. Visual Studio застосовується для для:
! Public Function Add(a As Integer, b As Integer) As Integer
== Methods ==

End Property Багато Visual Basic-коду виступає як legacy code. У Visual Basic блоки часто завершуються словами:

Visual Basic 6 або VB6 — класична реліз системи Visual Basic до переходу на .NET. Console.WriteLine(response)

Return Nothing

Приклад:

  • читабельний синтаксис;
  • низький поріг входу;
  • Visual Studio tooling;
  • Windows Forms;
  • Office/VBA-спадщина;
  • .NET libraries;
  • type-safe .NET apps;
  • зручність для старих бізнес-процесів;
  • багато існуючого legacy-коду. Sub не повертає значення:

Приклад:

  • HTTP-запитів;
  • роботи з файлами;
  • database operations;
  • UI-застосунків;
  • background operations.
Public Class Animal Return a + b * помилки; * critical operations; * імпорт/експорт; * database updates; * user actions; * integration calls; * background jobs; * migration steps. Public Sub PrintMessage(message As String) [[Категорія:Пояснення термінів]]

Добра практика:

  • CRUD;
  • database-first;
  • model-first historically;
  • code-first;
  • LINQ queries;
  • migrations;
  • business data apps. Public Module MathHelpers

Приклад:

Приклад:

  • ловити помилки на етапі компіляції;
  • уникати випадкових conversion bugs;
  • писати type-safe code;
  • зробити код ближчим до сучасного .NET-стилю. * Event — подія, часто застосовується для в UI. Console.WriteLine("Unexpected error: " & ex.Message)

VBA — Visual Basic for Applications. Assert.AreEqual(5, result)


* '''Visual Basic''' — мова програмування Microsoft. * '''Option Strict''' — конфігурація, яке обмежує небезпечні неявні перетворення. End Function

Реалізація: Visual Basic .NET здатна використовувати стандартні .NET test frameworks:

VB6 не виступає як VB.NET. Visual Basic-застосунки мають ті самі security-ризики, що й інші бізнес-програми.[3]

Module Program Dim count = 10

Null і Nothing

Visual Basic підтримує generics. Червоний прапорець: On Error Resume Next здатна приховати помилки. Option Strict контролює неявні перетворення типів і late binding. End Function

Visual Basic і тестування

Events — важлива частина Visual Basic, особливо для Windows Forms. * VBA — Visual Basic for Applications, мова макросів Office. Console.WriteLine(text)

Стратегія Microsoft щодо Visual Basic

End Function

<pre>
Public Class PdfReportService
'''Option Explicit''' вимагає оголошення змінних перед використанням.
Сценарії:

 Console.WriteLine(customer.Name)

 Dim result = Calculator.Add(2, 3)
 Public Property Id As Integer
== Option Infer ==

 _name = value

Приклад:

через Документація .NET 10 зазначає, що Visual Basic compiler тепер інтерпретує й застосовує <code>unmanaged</code> generic constraint, а так само враховує <code>OverloadResolutionPriorityAttribute</code>. '''Практична порада:''' для сучасного VB.NET-коду краще використовувати <code>Option Strict On</code>. * '''Interface''' — контракт для класів. Dim title = "Report"

Public Class ReportGenerator

Головна ідея

  • legacy desktop utility;
  • старий інтеграційний компонент;
  • Office/VBA-звіт;
  • Windows Forms admin tool;
  • проміжний інструмент імпорту/експорту;
  • старий компонент, який треба мігрувати;
  • автоматизація процесів Excel-звітів;
  • клієнт ERP до API K2 ERP.
Приклад:

[[Категорія:Програмування]]

 Set(value As String)

Access використовують для:

{{SEO|title=Visual Basic — мова програмування Microsoft для .NET, Windows Forms, VBA-спадщини, desktop, legacy-систем і type-safe застосунків|description=Visual Basic — Wiki-стаття про мову програмування Microsoft Visual Basic: VB.NET, Windows Forms, .NET, Visual Studio, спадщину VB6 і VBA, type safety, класи, модулі, properties, events, LINQ, async/await, error handling, Windows desktop, Office automation, legacy systems, міграцію на C#, підтримку у .NET 10, стратегію Microsoft, обмеження, тестування й практичне використання Visual Basic у бізнесі, інтеграціях та підтримці старих систем.|keywords=Visual Basic, VB.NET, Visual Basic .NET, Microsoft Visual Basic, VB, Visual Basic 6, VB6, VBA, Visual Studio, .NET, .NET 10, Windows Forms, WinForms, type-safe .NET apps, Visual Basic language strategy, Visual Basic support, Visual Basic migration, VB to C#, Office automation, legacy systems, desktop apps, Microsoft.VisualBasic, LINQ Visual Basic, async await Visual Basic, програмування Visual Basic, підтримка Visual Basic|alternativeTo=повна міграція старих VB-систем без потреби; ручна підтримка legacy Windows-застосунків; VBA-макроси без структури; старі VB6-застосунки без плану модернізації; desktop-утиліти без Visual Studio; .NET-застосунки без type safety; підтримка Windows Forms без документації; переписування бізнес-логіки без аналізу ризиків}}

Назва Visual Basic здатна означати різні речі. * '''VB6''' — класичний Visual Basic 6 до .NET.<TestMethod>

Для існуючих VB-систем часто логічно підтримувати Visual Basic, якщо переписування не дає бізнес-користі.== Visual Basic і .NET libraries ==

Розробник здатна:

* не вмикати Option Strict;
* використовувати On Error Resume Next;
* писати всю логіку у формах;
* не мати tests;
* зберігати SQL у UI event handlers;
* використовувати глобальні змінні без контролю;
* не документувати legacy workflows;
* тримати паролі в коді;
* боятися змінювати legacy-код без тестів;
* переписувати все одразу без плану;
* плутати VBA, VB6 і VB.NET;
* не перевіряти сумісність із сучасним .NET. End Class

Visual Basic здатна бути невдалим вибором, якщо:

Сучасний C# має nullable reference types, але Visual Basic не розвиває новий синтаксис так активно.== Entity Framework ==

 From p In products
'''Module''' — тип, який містить shared functions, procedures або variables. * <code>End If</code>;
* <code>End Sub</code>;
* <code>End Function</code>;
* <code>End Class</code>;
* <code>End Module</code>.== Namespaces ==

Visual Basic дуже часто використовували саме з Windows Forms. End If
 Console.WriteLine(message)

== Visual Basic і C# ==

End Class

Async/Await

У Visual Basic застосовується для Nothing. # інвентаризація;

  1. тестування критичних сценаріїв;
  2. виділення бізнес-логіки;
  3. заміна залежностей;
  4. wrapper або API layer;
  5. поступове переписування;
  6. паралельна експлуатація;
  7. архівування старої системи. Order By p.Name

LINQ корисний для:

Interfaces корисні для testing, dependency injection і clean architecture. * service layer;

  • repository/data access layer;
  • DTO;
  • validation layer;
  • logging;
  • tests;
  • configuration;
  • dependency boundaries. Inherits Animal

Namespace Company.Project.Reports

* Newtonsoft.Json;
* Entity Framework Core;
* Dapper;
* Serilog;
* xUnit;
* NUnit;
* MSTest. Dim expensiveProducts =

Async/await корисний для:

Поширені помилки: Finally Generics потрібні для type-safe collections, services, repositories і reusable code. # Поступово покривати legacy-код тестами. * Windows Forms — desktop UI framework для Windows-застосунків. End Sub

Visual Basic підтримує inheritance. Legacy Visual Basic-застосунки часто мають слабке logging. Public Interface IReportService

Visual Basic .NET

  • Visual Basic підтримується;
  • Visual Studio experience для VB продовжує покращуватися;
  • VB здатна використовувати нові .NET APIs;
  • новий синтаксис додається обережно;
  • нові workloads зазвичай не додаються;
  • C# залишається головною мовою для активних нових .NET-напрямів.

Компілятор сам визначить, що total — Integer, а title — String.== Generics ==


Потрібно врахувати:

== Option Explicit ==

Офіційна стратегія Microsoft каже, що Visual Basic залишиться straightforward and approachable language зі stable design. Вони можуть використовувати ті самі .NET libraries, але мають різний синтаксис і різну стратегію розвитку. # Додавати logging. Visual Basic підтримує type inference:

Option Explicit On

Microsoft зберігає Visual Basic як стабільну й підтримувану мову, але не розвиває її так активно, як C#. * '''Nothing''' — відсутність значення або null-like значення у Visual Basic.

Public Class Product

Visual Basic і COM

як приклад: