VB Visual Basic  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Миграция с VB6 на VB.NET

Тест по теме «Миграция с VB6 на VB.NET» состоит из 30 вопросов: нужно читать код, сравнивать близкие решения, находить границы применимости правил и разбирать последствия ошибок. Заданий с кодом — 18; после каждого ответа открывается объяснение.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 1 из 30
Какой вывод о фрагменте по теме «Типы данных» технически обоснован?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Module LegacyTypes
    Sub ConvertValue()
        Dim legacyInteger As Short = 32000
        Dim modernInteger As Integer = legacyInteger
        Dim amount As Decimal = 12.34D
        Console.WriteLine($"{modernInteger}:{amount}")
    End Sub
End Module
Вопрос 2 из 30
Раздел «Типы данных»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_1
    Module LegacyTypes
        Sub ConvertValue()
            Dim reviewLegacyInteger As Short = 32000
            Dim reviewModernInteger As Integer = reviewLegacyInteger
            Dim reviewAmount As Decimal = 12.34D
            Console.WriteLine($"{reviewModernInteger}:{reviewAmount}")
        End Sub
    End Module
End Namespace
Вопрос 3 из 30
Раздел «Типы данных»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_1
    Module LegacyTypes
        Sub ConvertValue()
            Dim edgeLegacyInteger As Short = 32000
            Dim edgeModernInteger As Integer = edgeLegacyInteger
            Dim edgeAmount As Decimal = 12.34D
            Console.WriteLine($"{edgeModernInteger}:{edgeAmount}")
        End Sub
    End Module
End Namespace
Вопрос 4 из 30
Раздел «Типы данных»: какой вариант оставляет важное условие явным для следующего разработчика?
Вопрос 5 из 30
Раздел «Типы данных»: какое обобщение не зависит от случайных деталей показанного примера?
Вопрос 6 из 30
Раздел «Формы»: какой разбор этого кода останется точным после переименования переменных?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Class LegacyFormAdapter
    Private ReadOnly view As ICustomerView
    Public Sub New(view As ICustomerView)
        Me.view = view
    End Sub
    Public Sub LoadCustomer(id As Integer)
        view.Show(CustomerService.GetById(id))
    End Sub
End Class
Вопрос 7 из 30
Раздел «Формы»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_2
    Class LegacyFormAdapter
        Private ReadOnly reviewView As ICustomerView
        Public Sub New(reviewView As ICustomerView)
            Me.reviewView = reviewView
        End Sub
        Public Sub LoadCustomer(reviewId As Integer)
            reviewView.Show(CustomerService.GetById(reviewId))
        End Sub
    End Class
End Namespace
Вопрос 8 из 30
Раздел «Формы»: для фрагмента с LegacyFormAdapter добавляют регрессионный тест. Какой контракт он должен защищать?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_2
    Class LegacyFormAdapter
        Private ReadOnly edgeView As ICustomerView
        Public Sub New(edgeView As ICustomerView)
            Me.edgeView = edgeView
        End Sub
        Public Sub LoadCustomer(edgeId As Integer)
            edgeView.Show(CustomerService.GetById(edgeId))
        End Sub
    End Class
End Namespace
Вопрос 9 из 30
Раздел «Формы»: какой выбор не превращает скрытую ошибку в тихое продолжение работы?
Вопрос 10 из 30
Что точнее всего описывает механизм «Формы»?
Вопрос 11 из 30
Какой контракт действительно соблюдает показанный фрагмент из раздела «COM-компоненты»?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Class LegacyComAdapter
    Implements ILegacyCalculator
    Private ReadOnly com As Object
    Public Function Calculate(value As Decimal) As Decimal Implements ILegacyCalculator.Calculate
        Return CDec(CallByName(com, "Calculate", CallType.Method, value))
    End Function
End Class
Вопрос 12 из 30
Раздел «COM-компоненты»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_3
    Class LegacyComAdapter
        Implements ILegacyCalculator
        Private ReadOnly com As Object
        Public Function Calculate(value As Decimal) As Decimal Implements ILegacyCalculator.Calculate
            Return CDec(CallByName(com, "Calculate", CallType.Method, value))
        End Function
    End Class
End Namespace
Вопрос 13 из 30
Раздел «COM-компоненты»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_3
    Class LegacyComAdapter
        Implements ILegacyCalculator
        Private ReadOnly com As Object
        Public Function Calculate(value As Decimal) As Decimal Implements ILegacyCalculator.Calculate
            Return CDec(CallByName(com, "Calculate", CallType.Method, value))
        End Function
    End Class
End Namespace
Вопрос 14 из 30
Раздел «COM-компоненты»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Вопрос 15 из 30
Раздел «COM-компоненты»: какое обобщение не зависит от случайных деталей показанного примера?
Вопрос 16 из 30
Раздел «Пошаговая замена»: в примере с MigrationFacade важна не форма записи, а поведение. Какое утверждение его описывает?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Class MigrationFacade
    Public Function Calculate(order As Order) As Decimal
        If FeatureFlags.UseModernPricing Then Return modern.Calculate(order)
        Return legacy.Calculate(order)
    End Function
End Class
Вопрос 17 из 30
Раздел «Пошаговая замена»: что должно остаться явным после переработки участка с MigrationFacade?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_4
    Class MigrationFacade
        Public Function Calculate(reviewOrder As Order) As Decimal
            If FeatureFlags.UseModernPricing Then Return modern.Calculate(reviewOrder)
            Return legacy.Calculate(reviewOrder)
        End Function
    End Class
End Namespace
Вопрос 18 из 30
Раздел «Пошаговая замена»: обычный сценарий проходит. Что следует закрепить отдельным граничным тестом?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_4
    Class MigrationFacade
        Public Function Calculate(edgeOrder As Order) As Decimal
            If FeatureFlags.UseModernPricing Then Return modern.Calculate(edgeOrder)
            Return legacy.Calculate(edgeOrder)
        End Function
    End Class
End Namespace
Вопрос 19 из 30
Раздел «Пошаговая замена»: что нужно сделать частью контракта рабочего модуля?
Вопрос 20 из 30
Раздел «Пошаговая замена»: какой вывод можно использовать как основание для ревью кода?
Вопрос 21 из 30
Раздел «Разбор отказов»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Class MigrationProbe
    Public Sub Compare(sample As LegacyRecord)
        Dim oldResult = legacy.Run(sample)
        Dim newResult = modern.Run(mapper.Convert(sample))
        If oldResult <> newResult Then log.Difference(sample.Id, oldResult, newResult)
    End Sub
End Class
Вопрос 22 из 30
Раздел «Разбор отказов»: какая претензия к возможной правке относится к поведению программы?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_5
    Class MigrationProbe
        Public Sub Compare(reviewSample As LegacyRecord)
            Dim reviewOldResult = legacy.Run(reviewSample)
            Dim reviewNewResult = modern.Run(mapper.Convert(reviewSample))
            If reviewOldResult <> reviewNewResult Then log.Difference(reviewSample.Id, reviewOldResult, reviewNewResult)
        End Sub
    End Class
End Namespace
Вопрос 23 из 30
Раздел «Разбор отказов»: какое правило нельзя считать проверенным одним обычным примером?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_5
    Class MigrationProbe
        Public Sub Compare(edgeSample As LegacyRecord)
            Dim edgeOldResult = legacy.Run(edgeSample)
            Dim edgeNewResult = modern.Run(mapper.Convert(edgeSample))
            If edgeOldResult <> edgeNewResult Then log.Difference(edgeSample.Id, edgeOldResult, edgeNewResult)
        End Sub
    End Class
End Namespace
Вопрос 24 из 30
Раздел «Разбор отказов»: какой вариант оставляет важное условие явным для следующего разработчика?
Вопрос 25 из 30
Что точнее всего описывает механизм «Разбор отказов»?
Вопрос 26 из 30
Какой контракт действительно соблюдает показанный фрагмент из раздела «Восстановление системы»?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Class MigrationRunner
    Public Sub Apply(batch As IReadOnlyList(Of LegacyRecord))
        Using transaction = database.BeginTransaction()
            checkpoint.Save(batch(0).Id)
            modernStore.Write(batch, transaction)
            audit.Verify(batch, transaction)
            transaction.Commit()
        End Using
    End Sub
End Class
Вопрос 27 из 30
Раздел «Восстановление системы»: что должно остаться явным после переработки участка с MigrationRunner?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Strict On
Namespace ReviewCase27_6
    Class MigrationRunner
        Public Sub Apply(reviewBatch As IReadOnlyList(Of LegacyRecord))
            Using transaction = database.BeginTransaction()
                checkpoint.Save(reviewBatch(0).Id)
                modernStore.Write(reviewBatch, transaction)
                audit.Verify(reviewBatch, transaction)
                transaction.Commit()
            End Using
        End Sub
    End Class
End Namespace
Вопрос 28 из 30
Раздел «Восстановление системы»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · Миграция с VB6 на VB.NET
Option Explicit On
Option Infer On
Namespace BoundaryCase27_6
    Class MigrationRunner
        Public Sub Apply(edgeBatch As IReadOnlyList(Of LegacyRecord))
            Using transaction = database.BeginTransaction()
                checkpoint.Save(edgeBatch(0).Id)
                modernStore.Write(edgeBatch, transaction)
                audit.Verify(edgeBatch, transaction)
                transaction.Commit()
            End Using
        End Sub
    End Class
End Namespace
Вопрос 29 из 30
Раздел «Восстановление системы»: что здесь важнее локального удобства: какой контракт должен быть виден в коде?
Вопрос 30 из 30
Какое правило по теме «Восстановление системы» можно безопасно перенести из примера в реальный проект?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу