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

Visual Basic

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

Console.WriteLine("Unexpected error: " & ex.Message)

Module Program

Console.WriteLine("Bark")

Properties

Public Overrides Sub Speak()

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

Refactoring Visual Basic-коду має змогу включати:

End Sub

{{SEO


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

Public Function FirstOrDefaultValue(Of T)(items As List(Of T)) As T Public Module MathHelpers

VBA

Namespaces допомагають уникати конфліктів і підтримувати структуру великого проєкту.; У VB.NET застосовується structured exception handling.; Що це

Visual Basic підтримує роботу класи.; Окремо варто відзначити які підтримують Visual Basic runtime, string operations і інші VB-специфічні функціональні можливості.;

Міграція з VB6 складніша, ніж міграція з VB.NET.; * .NET — платформа Microsoft для застосунків і бібліотек.; Dim expensiveProducts = Приклад: У сучасному VB.NET краще використовувати Try/Catch, а не старий стиль On Error Resume Next.; Visual Basic і VBA часто використовують для Office automation.; Практичний висновок: Visual Basic не “мертвий”, але він стабільний, а не агресивно інноваційний.;== Visual Basic і ERP-системи ==

End Sub


* помилки;
* critical operations;
* імпорт/експорт;
* database updates;
* user actions;
* integration calls;
* background jobs;
* migration steps.; From p In products
</div>
'''істотно:''' найбільший ризик старих VB-систем часто не в мові, а в архітектурі: hardcoded passwords, прямий доступ до бази, відсутність ролей, logs і тестів.; Legacy Visual Basic-застосунки часто мають слабке logging.;<pre>
'''Option Infer''' надає можливість компілятору виводити тип змінної.;== Null і Nothing ==
Приклад:

VBA не є собою VB.NET, але синтаксис схожий.; Це робить код схожим на структурований текст.; !; Перед технічними рішеннями потрібно уточнити контекст.; * '''Nothing''' — відсутність значення або null-like значення у Visual Basic.; Для нових .NET-проєктів частіше обирають C#, а VB часто залишається для підтримки й еволюції існуючих систем.;== Modules ==

# інвентаризація;
# тестування критичних сценаріїв;
# виділення бізнес-логіки;
# заміна залежностей;
# wrapper або API layer;
# поступове переписування;
# паралельна експлуатація;
# архівування старої системи.; # Перевіряти підтримку libraries і workloads.; Try

Для старих VB6/VBA API-виклики теж можливі, але часто складніші й потребують COM/WinHTTP/XMLHTTP або wrapper.; Core libraries .NET підтримуватимуть Visual Basic, а багато покращень .NET Runtime і libraries автономно будуть корисні VB-користувачам.;<ref>https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview</ref>

Вони можуть використовувати ті самі .NET libraries, але мають різний синтаксис і різну стратегію розвитку.; * команда вже функціонує на C#;
* потрібні нові .NET workloads;
* застосунок активно розвивається;
* VB-код складно підтримувати;
* потрібно залучати більше розробників;
* потрібен ASP.NET Core, cloud або modern backend;
* legacy architecture заважає розвитку.; * [https://learn.microsoft.com/en-us/dotnet/visual-basic/ Microsoft Learn — Visual Basic documentation]
* [https://learn.microsoft.com/en-us/dotnet/visual-basic/getting-started/strategy Microsoft Learn — Visual Basic language strategy]
* [https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview Microsoft Learn — What's new in .NET 10]
* [https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/ Microsoft Learn — Visual Basic Programming Guide]
* [https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/ Microsoft Learn — Visual Basic Language Reference]
* [https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/concepts/linq/ Microsoft Learn — LINQ in Visual Basic]
* [https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/concepts/async/ Microsoft Learn — Async programming with Async and Await]
* [https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualbasic Microsoft Learn — Microsoft.VisualBasic namespace]
* [https://learn.microsoft.com/en-us/visualstudio/get-started/visual-basic/ Microsoft Learn — Get started with Visual Basic in Visual Studio]
* [https://learn.microsoft.com/en-us/dotnet/desktop/winforms/ Windows Forms documentation]
* [https://dotnet.microsoft.com/en-us/platform/support/policy Microsoft — .NET support policy]
* [https://www.mediawiki.org/wiki/Help:Formatting MediaWiki — Help:Formatting]
* [https://www.mediawiki.org/wiki/Help:Links MediaWiki — Help:Links]

Interface описує контракт.; '''VBA''' — Visual Basic for Applications.; * '''Visual Studio''' — основна IDE для Visual Basic.;== Option Strict ==

== LINQ ==

Це зробило Visual Basic дуже популярним для швидкої розробки Windows desktop-застосунків.; * додати Button;
* додати TextBox;
* додати DataGridView;
* налаштувати properties;
* підключити event handler.; # Використовувати <code>Option Explicit On</code>.; Finally

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

Visual Basic підтримує роботу inheritance.; VB.NET має змогу викликати REST API.; * '''VB6''' — класичний Visual Basic 6 до .NET.; * internal tools;
* desktop utilities;
* legacy business apps;
* data entry forms;
* admin panels;
* Windows-only applications.;[[Категорія:Microsoft]]

</div>

== Міграція з VB6 ==

* Excel reports;
* Access reports;
* data export;
* formatting;
* printing;
* Office templates.; Dim result = Calculator.Add(2, 3)

Visual Basic найкраще сприймати як мову підтримки, модернізації й еволюції існуючих бізнес-систем.; Event-driven programming була однією з причин популярності Visual Basic для desktop-застосунків.; * '''Async/Await''' — механізм асинхронного програмування.; Visual Basic і C# працюють на .NET.;<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">

Namespaces організовують код.; If customer IsNot Nothing Then

Option Strict On

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

!;[1]

Windows Forms або WinForms — класичний framework для desktop-застосунків Windows.; Реалізація:

Console.WriteLine(message)

names.Add("Anna") Option Explicit вимагає оголошення змінних перед використанням.; * Function — процедура, яка повертає значення.; Public Overridable Sub Speak() Приклад:

End Function

Classes

Visual Basic має змогу використовувати більшість .NET libraries.; # Зберігати код у Git.; Проста аналогія: Visual Basic — це мова, яка довго була “вхідними дверима” у програмування для бізнес-користувачів, аналітиків і Windows-розробників.;

Сучасний C# має nullable reference types, але Visual Basic не розвиває новий синтаксис так активно.; * Windows Forms — desktop UI framework для Windows-застосунків.; # Робити code review навіть для legacy changes.; Visual Basic має змогу використовувати Entity Framework або Entity Framework Core для роботи з базами даних.; Function GenerateReport(reportId As Integer) As Byte()

Сьогодні VB6 часто зустрічається в legacy-системах:

Return a + b

Visual Basic 6 або VB6 — класична реліз Visual Basic до переходу на .NET.; # Для VB.NET вмикати Option Strict On.; У legacy VB-системах часто зустрічаються старі технології доступу до даних: ADO, ADO.NET, typed DataSets, Access database, SQL Server.;

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

Console.WriteLine("Done")

Microsoft documentation має окремий напрям Windows Forms apps для Visual Basic.;


Public Class Dog

* фільтрації;
* сортування;
* групування;
* запитів до collections;
* Entity Framework;
* XML;
* data transformations.;<pre>

 Await Task.Delay(1000)

[[Категорія:Тестування]]

* невеликих баз даних;
* форм;
* внутрішніх інструментів;
* швидких business apps;
* legacy workflows.; Visual Basic є собою однією з трьох мов Microsoft у .NET разом із C# і F#.; * '''ActiveX''' — технологія компонентів, часто пов’язана зі старими VB/COM-рішеннями.; Inheritance треба використовувати обережно.; '''Sub''' не повертає значення:
 Set(value As String)

Visual Basic підтримує роботу async/await.; * COM — Component Object Model, стара Windows component technology.; Міграція з VB6 на VB.NET або C# має змогу бути складною, бо змінюється runtime, модель об’єктів, бібліотеки й технічна архітектура.;== Office automation ==

  • service layer;
  • repository/data access layer;
  • DTO;
  • validation layer;
  • logging;
  • tests;
  • configuration;
  • dependency boundaries.;
Implements IReportService.GenerateReport

Приклад: Private _name As String

Generics

Не варто логувати:

Generics потрібні для type-safe collections, services, repositories і reusable code.; Сильні сторони

Logging

  • ловити помилки на етапі компіляції;
  • уникати випадкових conversion bugs;
  • писати type-safe code;
  • зробити код ближчим до сучасного .NET-стилю.; Public Sub PrintMessage(message As String)

Приклад:

Console.WriteLine(response)

End Try

Option Explicit

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

Сценарії:

Dim customer As Customer = Nothing

Практична порада: для сучасного VB.NET-коду краще використовувати Option Strict On.; End Module

Dim name As String = "Visual Basic"

Приклади:

Дивіться додатково

Error handling

WinForms підходить для:


<div style="background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;">

Приклад:
Option Infer On
== Refactoring ==
End Class
Access використовують для:

Microsoft Access історично тісно пов’язаний із VBA.; Але в бізнес-коді явні типи часто роблять код зрозумілішим.;<ref>https://learn.microsoft.com/en-us/dotnet/visual-basic/getting-started/strategy</ref>

 End Sub
End If
Dim client As New HttpClient()
 Public Class ReportGenerator
Visual Studio застосовується для:
'''Visual Basic .NET''' — це Visual Basic для платформи .NET.; Public Function Add(a As Integer, b As Integer) As Integer

</div>

Для нових .NET-проєктів частіше обирають C#.; Events — важлива частина Visual Basic, особливо для Windows Forms.; End Get
Тестування особливо важливе для legacy-систем перед міграцією.; * паролі;
* tokens;
* персональні інформаційні дані без потреби;
* повні фінансові документи без політики.; з цієї причини дисципліна перевірок на Nothing дуже важлива.; Implements IReportService

<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">

У desktop apps async сприяє не блокувати UI thread.; Але Visual Basic зазвичай матиме consumption-only підхід і не буде розширюватися на нові workloads.; # Поступово покривати legacy-код тестами.;== Legacy code ==
Public Function GenerateReport(reportId As Integer) As Byte() _

Public Class Animal

Inheritance


Visual Basic підтримує роботу type inference:

* код давно функціонує;
* він важливий для бізнесу;
* його складно змінювати;
* документації має змогу не вистачати;
* автори могли піти;
* тести можуть бути відсутні;
* залежності можуть бути старими.; Поширені помилки:

'''Практичне правило:''' не переписуйте VB-систему тільки з цієї причини, що “VB старий”.; Return New Byte() {}

NuGet робить доступними багато .NET-бібліотек, але потрібно перевіряти сумісність із Visual Basic і конкретним типом проєкту.;

Public Function Add(a As Integer, b As Integer) As Integer

  • Visual Basic — мова програмування Microsoft.; Visual Basic підтримує роботу generics.;

У контексті K2 ERP Visual Basic має змогу бути актуальним як: Catch ex As IOException Сценарії:

Visual Basic 6

Dim isActive As Boolean = True

Це сприяє:

Sub Main()

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

  • Newtonsoft.Json;
  • Entity Framework Core;
  • Dapper;
  • Serilog;
  • xUnit;
  • NUnit;
  • MSTest.; # Перевіряти hardcoded secrets.; Microsoft Learn окремо описує Visual Basic documentation для .NET-розробників.; End Function
  • не вмикати Option Strict;
  • використовувати On Error Resume Next;
  • писати всю логіку у формах;
  • не мати tests;
  • зберігати SQL у UI event handlers;
  • використовувати глобальні змінні без контролю;
  • не документувати legacy workflows;
  • тримати паролі в коді;
  • боятися змінювати legacy-код без тестів;
  • переписувати все одразу без плану;
  • плутати VBA, VB6 і VB.NET;
  • не перевіряти сумісність із сучасним .NET.;== Хороші практики ==
Public Sub Add_ReturnsSum()

Visual Basic історично був популярним з цієї причини, що дозволяв оперативно створювати: Обмеження: Visual Studio Designer надає можливість створювати форми через drag-and-drop.; _name = value

Methods у Visual Basic бувають Sub і Function.; * Event — подія, часто застосовується в UI.; Inherits Animal


<pre>

<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">
VB6 був дуже популярним для Windows desktop-застосунків.; Багато Visual Basic-коду є собою legacy code.; End Module

 Public Property Name As String
Visual Basic — важлива мова Microsoft із великою спадщиною в бізнес-застосунках, Windows Forms, Office automation і legacy-системах.;== Синтаксис Visual Basic ==
== Visual Basic і формування звітів ==

 Public Property Price As Decimal
End Interface
Visual Basic особливо тісно пов’язаний із Visual Studio, бо історично сила VB була не тільки в мові, а й у drag-and-drop розробці форм.; Public Property Name As String

Visual Basic і COM

Private Sub ButtonSave_Click(sender As Object, e As EventArgs) _ Visual Basic .NET має змогу використовувати стандартні .NET test frameworks: Приклад:


Public Class PdfReportService

Visual Studio — головна IDE для Visual Basic.; * підтримки існуючих VB.NET систем;

  • Windows Forms legacy apps;
  • Office/VBA automation;
  • внутрішніх desktop tools;
  • простих бізнес-утиліт;
  • підтримки старих процесів;
  • міграційних проєктів;
  • читання й розуміння старого коду;
  • швидких змін у вже існуючому VB-проєкті.; Мова !!; Змінні оголошуються через Dim.; завдяки наявності Документація .NET 10 зазначає, що Visual Basic compiler тепер інтерпретує й застосовує unmanaged generic constraint, а додатково враховує OverloadResolutionPriorityAttribute.; * VBScript — стара scripting-мова Windows із VB-подібним синтаксисом.; Для нових .NET-проєктів варто серйозно розглядати C#, але для діючих VB-рішень часто розумніше не переписувати все, а поступово покращувати, тестувати й модернізувати.; * Sub — процедура без значення, що повертається.; Async/await корисний для:
Console.WriteLine(text)
Console.WriteLine(customer.Name)

Security

Where p.Price > 1000

Підхід до legacy VB-коду має бути обережним: спочатку зрозуміти, потім покривати тестами, потім змінювати.;== Visual Basic у .NET 10 ==

Assert.AreEqual(5, result)

Methods

  • Excel reports;
  • Word documents;
  • Outlook automation;
  • Access forms;
  • data import/export;
  • templates;
  • macros;
  • бухгалтерські таблиці;
  • внутрішні офісні процеси.; * Refactoring — покращення структури коду без зміни поведінки.; Він підтримує роботу:

<pre>

'''Module''' — тип, який містить shared functions, procedures або variables.;== Visual Basic і API ==
<TestClass>
{| class="wikitable"

== Коли Visual Basic особливо корисний ==

Visual Basic-проєкти часто мають стару архітектуру:

[[Категорія:VBA]]

* COM components;
* ActiveX controls;
* старі форми;
* database access;
* business logic;
* UI behavior;
* deployment;
* Windows APIs;
* third-party components;
* hidden assumptions;
* відсутність тестів.;<pre>
Public Class CalculatorTests

Головна ідея Visual Basic — зробити програмування більш доступним, читабельним і наближеним до природної мови.; * MSTest;

  • NUnit;
  • xUnit.; Назва Visual Basic має змогу означати різні речі.;== Міграція з Visual Basic на C# ==

Червоний прапорець: On Error Resume Next має змогу приховати помилки.; Console.WriteLine("Hello, Visual Basic")

У старих Windows-системах Visual Basic часто працював із COM.; # Міграцію робити поетапно.; Visual Basic має змогу бути невдалим вибором, якщо:

Офіційна стратегія Microsoft каже, що Visual Basic залишиться straightforward and approachable language зі stable design.;== Джерела ==

Public Property Id As Integer

Приклад:

  • читабельний синтаксис;
  • низький поріг входу;
  • Visual Studio tooling;
  • Windows Forms;
  • Office/VBA-спадщина;
  • .NET libraries;
  • type-safe .NET apps;
  • зручність для старих бізнес-процесів;
  • багато існуючого legacy-коду.; * Visual Basic підтримується;
  • Visual Studio experience для VB продовжує покращуватися;
  • VB має змогу використовувати нові .NET APIs;
  • новий синтаксис додається обережно;
  • нові workloads зазвичай не додаються;
  • C# залишається головною мовою для активних нових .NET-напрямів.;

Але нову бізнес-логіку ERP краще будувати в основному технологічному стеку системи, а Visual Basic використовувати там, де це виправдано підтримкою старих процесів.; Це зменшує “магію” й робить поведінку коду передбачуванішою.; * мова має stable design, а не активний інноваційний еволюція;

  • нові workloads зазвичай не додаються;
  • C# має активнішу ecosystem і community;
  • VB6/VBA/VB.NET без зайвих зусиль плутати;
  • legacy-код часто має архітектурні й security-проблеми;
  • для нових cloud/backend/web-проєктів VB рідко є собою першим вибором.; * LINQ — Language Integrated Query.; це мова програмування Microsoft із довгою історією, яка сьогодні найчастіше означає Visual Basic виступає ключовою рисою Visual Basic.NET або VB.NET — об’єктно-орієнтовану мову для платформи .NET.; End Set
Select p
  • Excel;
  • Word;
  • Access;
  • Outlook;
  • PowerPoint.; Це покращує сумісність із сучасними runtime APIs і користувачі можуть вибирати кращі overloads.; * Migration — перенесення системи на іншу платформу, мову або архітектуру.;== Events ==
  • макросів;
  • автоматизації Excel;
  • звітів;
  • обробки таблиць;
  • форм;
  • Office workflows.; Dim title = "Report"

Для VB6 часто краще робити поетапну модернізацію: Компілятор сам визначить, що total — Integer, а title — String.; * Class — клас, характеристика об’єкта.; * End If;

  • End Sub;
  • End Function;
  • End Class;
  • End Module.;

Міграція COM-залежностей — одна зі складних частин модернізації VB6/VB.NET систем.; Dim text = File.ReadAllText("data.txt")

Потрібно перевіряти об’єкти перед використанням:

Приклад MSTest:


== Designer ==

* старі ERP/CRM-утиліти;
* бухгалтерські програми;
* внутрішні Windows tools;
* ActiveX-компоненти;
* COM-інтеграції;
* старі форми;
* database applications.;<ref>https://learn.microsoft.com/en-us/dotnet/visual-basic/</ref>

COM-інтеграції можуть бути в:
Modules зручні для utility functions, але надмірне використання modules має змогу привести до procedural spaghetti code.;<pre>
</div>

 Public Property Name As String

Interfaces корисні для testing, dependency injection і clean architecture.; Але міграція не завжди потрібна.;[[Категорія:Пояснення термінів]]

== NuGet ==

 End If

Приклад ідеї:
== Namespaces ==
Приклад:
<pre>
 Return a + b

Це означає:

Для важливих production-систем Access/VBA має змогу бути ризиковим через обмеження масштабованості, безпеки й супроводу.;<pre>
 Console.WriteLine("Animal sound")
 Console.WriteLine("File error: " & ex.Message)
Він не веде обліковий облік сам по собі, не проводить документи й не керує складом без прикладної бізнес-логіки.; Приклад:

 Public Property Id As Integer

  • UI + business logic в одній формі;
  • SQL прямо в event handlers;
  • глобальні modules;
  • shared mutable state;
  • відсутність layers;
  • hidden dependencies.;== Interfaces ==

End Property

Option Strict контролює неявні перетворення типів і late binding.; як ілюстрація: Microsoft.VisualBasic namespace містить типи й modules.; * VB.NET — Visual Basic для платформи .NET.; * Option Strict — конфігурація, яке обмежує небезпечні неявні перетворення.; End Class

Для нових інтеграцій краще використовувати сучасний .NET або окремий backend-service.; End Function

Public Class Product
Visual Basic не є собою ERP-системою.; * '''Property''' — властивість класу.; # Не переписувати систему без бізнес-причини.; У бізнес-системах це небезпечно: програма має змогу продовжити роботу після збою й пошкодити інформаційні дані або сформувати неправильний результат.; * '''Module''' — тип Visual Basic для shared procedures і helpers.;== Option Infer ==

# Уточнити, йдеться про VB.NET, VB6 чи VBA.; # Не використовувати <code>On Error Resume Next</code> без крайньої потреби.; * '''Interface''' — контракт для класів.;<ref>https://learn.microsoft.com/en-us/dotnet/visual-basic/</ref>

 End Class
 End Sub
End Class
Properties — стандартний спосіб описати інформаційні дані класу.; * '''Option Infer''' — конфігурація автоматичного виведення типів.; Сьогодні вона важлива насамперед для підтримки існуючих .NET/VB-систем, Windows Forms, Office/VBA-спадщини й бізнес-застосунків, які вже написані на VB.; * HTTP-запитів;
* роботи з файлами;
* database operations;
* UI-застосунків;
* background operations.; * '''Option Explicit''' — конфігурація, яке вимагає оголошення змінних.; VBA корисний для:

== Async/Await ==

Generic function:

[[Категорія:VB6]]

* CRUD;
* database-first;
* model-first historically;
* code-first;
* LINQ queries;
* migrations;
* business data apps.; * '''Legacy code''' — старий, але бізнес-критичний код.; У Visual Basic блоки часто завершуються словами:

* legacy desktop utility;
* старий інтеграційний компонент;
* Office/VBA-звіт;
* Windows Forms admin tool;
* проміжний інструмент імпорту/експорту;
* старий компонент, який треба мігрувати;
* автоматизація процесів Excel-звітів;
* замовник до API K2 ERP.; Visual Basic-застосунки мають ті самі security-ризики, що й інші бізнес-програми.;

Entity Framework

LINQ корисний для:
'''Function''' повертає значення:

'''Не плутати:''' якщо користувач системи каже “Visual Basic”, він має змогу мати на увазі VB.NET, VB6 або VBA.;== Visual Basic і .NET libraries ==

Visual Basic має читабельний синтаксис.; Добре логувати:

End Class

* System.IO;
* System.Net.Http;
* System.Text.Json;
* System.Data;
* System.Threading.Tasks;
* Microsoft.VisualBasic namespace;
* third-party NuGet packages.;

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

* VB6 apps;
* Office automation;
* ActiveX controls;
* legacy ERP/CRM;
* desktop components;
* industrial software.; If items.Count = 0 Then
Це сприяє уникати помилок через опечатки в назвах змінних.; # Виносити бізнес-логіку з UI forms.;<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">

Але для нової звітності краще розглядати централізований reporting layer, API, BI або web-based reports.; Return Nothing
<pre>
VBA застосовується в Microsoft Office:

End Function

* бізнес-сутностей;
* сервісів;
* DTO;
* forms;
* models;
* data access;
* domain logic.; Переписуйте, якщо є собою зрозуміла бізнес-причина: ризики, супровід, найм, інтеграції, безпека або еволюція.; desktop-застосунків забезпечується через Visual Basic застосовується; додатково реалізовано Windows Forms, внутрішніх бізнес-утиліт, legacy-систем, Office/VBA-спадщини, автоматизації, підтримки старого коду й деяких .NET-застосунків.; Приклад:
 Order By p.Name
Офіційна документація Microsoft описує Visual Basic як об’єктно-орієнтовану мову програмування, яка надає можливість оперативно створювати type-safe .NET apps.; MessageBox.Show("Saved")

Приклад:
Ці технології схожі синтаксично, але це не одне й те саме.;

Dim count = 10 Visual Basic дуже часто використовували саме з Windows Forms.; # Додавати logging.;== Variables ==

Приклад:

Потрібно контролювати:

Option Explicit On

Visual Basic/VBA часто використовували для звітності:

Return _name

Добра практика: У Visual Basic застосовується Nothing.; Public Class Customer

Dim name = "Visual Basic"

== Головна ідея ==
End Class
Розробник має змогу:
== Visual Basic .NET ==

VB6 не є собою VB.NET.; Не варто робити великий refactoring без tests і backup.; |-
| '''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-синтаксисом
|}

End Sub

== Visual Basic і Access ==

== Коли Visual Basic має змогу бути невдалим вибором ==

Для [[Звітність K2 ERP|звітності K2 ERP]] Visual Basic має змогу бути доречним, якщо потрібно підтримувати старі Excel/VBA-звіти.;<TestMethod>

Під час роботи з Visual Basic варто:

У .NET 10 Visual Basic отримав compiler improvements.; Назва !!; * SQL injection;
* hardcoded passwords;
* слабку авторизацію;
* доступ до файлів;
* небезпечні COM components;
* старі libraries;
* macros;
* Office automation risks;
* insecure connection strings;
* відсутність logging;
* права користувачів Windows;
* outdated runtime.; Handles ButtonSave.Click

== Windows Forms ==

End Namespace

End Class

<pre>
 Return items(0)
<pre>

Dim total = 100

</div>
== Visual Studio ==
Visual Basic .NET має змогу використовувати NuGet packages.; * класи;
* об’єкти;
* інтерфейси;
* generics;
* LINQ;
* async/await;
* events;
* properties;
* exception handling;
* Windows Forms;
* .NET libraries;
* Visual Studio tooling.; Get
Catch ex As Exception
== Visual Basic, VB.NET, VB6 і VBA ==
== Практичний висновок ==

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

Legacy означає:

End Function

End Sub

Architecture

Visual Basic і C#

Microsoft зберігає Visual Basic як стабільну й підтримувану мову, але не розвиває її так активно, як C#.; * VBA — Visual Basic for Applications, мова макросів Office.; Потрібно врахувати:

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

Dim count As Integer = 10

  • розбиття великих процедур;
  • виділення functions;
  • заміна глобальних змінних;
  • додавання tests;
  • увімкнення Option Strict;
  • видалення дублювання;
  • заміна On Error Resume Next;
  • покращення names;
  • розділення UI і бізнес-логіки;
  • поступова міграція на services;
  • заміна старих data access підходів.; # Для нових .NET-проєктів порівнювати VB із C#.; * WinForms — скорочення від Windows Forms.; Dim names As New List(Of String)()

Для підтримки краще поступово вводити:

  • VB.NET projects;
  • Windows Forms;
  • .NET libraries;
  • debugging;
  • designers;
  • IntelliSense;
  • refactoring;
  • testing;
  • NuGet packages;
  • Git integration.; {| class="wikitable"

Properties можуть мати custom getter/setter: Public Interface IReportService Для існуючих VB-систем часто логічно підтримувати Visual Basic, якщо переписування не дає бізнес-користі.; Міграція на C# має змогу бути доречною, якщо:

Приклад:
Dim response = Await client.GetStringAsync("https://api.example.com/items")

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

Return "Done" Namespace Company.Project.Reports Visual Basic підтримує роботу LINQ.; Коротко: Visual Basic — це мова Microsoft із дуже читабельним синтаксисом.; Legacy не означає “поганий”.; # Документувати критичні сценарії.; Для багатьох сценаріїв interfaces і composition можуть бути кращими.;[2] Public Async Function LoadDataAsync() As Task(Of String)