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

Архитектура крупного VB.NET-приложения

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 1 из 30
Раздел «Слои»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Namespace Domain
    Public Class Order
        Public Sub Confirm()
            If Status <> OrderStatus.Draft Then Throw New InvalidOperationException()
            Status = OrderStatus.Confirmed
        End Sub
        Public Property Status As OrderStatus
    End Class
End Namespace
Вопрос 2 из 30
Раздел «Слои»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_1
    Namespace Domain
        Public Class Order
            Public Sub Confirm()
                If Status <> OrderStatus.Draft Then Throw New InvalidOperationException()
                Status = OrderStatus.Confirmed
            End Sub
            Public Property Status As OrderStatus
        End Class
    End Namespace
End Namespace
Вопрос 3 из 30
Раздел «Слои»: обычный сценарий проходит. Что следует закрепить отдельным граничным тестом?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_1
    Namespace Domain
        Public Class Order
            Public Sub Confirm()
                If Status <> OrderStatus.Draft Then Throw New InvalidOperationException()
                Status = OrderStatus.Confirmed
            End Sub
            Public Property Status As OrderStatus
        End Class
    End Namespace
End Namespace
Вопрос 4 из 30
Раздел «Слои»: что здесь важнее локального удобства: какой контракт должен быть виден в коде?
Вопрос 5 из 30
Раздел «Слои»: какой вывод можно использовать как основание для ревью кода?
Вопрос 6 из 30
Раздел «Внедрение зависимостей»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Class OrderController
    Private ReadOnly service As IOrderService
    Public Sub New(service As IOrderService)
        Me.service = service
    End Sub
End Class
Вопрос 7 из 30
Раздел «Внедрение зависимостей»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_2
    Class OrderController
        Private ReadOnly reviewService As IOrderService
        Public Sub New(reviewService As IOrderService)
            Me.reviewService = reviewService
        End Sub
    End Class
End Namespace
Вопрос 8 из 30
Раздел «Внедрение зависимостей»: какое допущение стоит нарушить отдельно, чтобы проверка действительно ловила ошибку?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_2
    Class OrderController
        Private ReadOnly edgeService As IOrderService
        Public Sub New(edgeService As IOrderService)
            Me.edgeService = edgeService
        End Sub
    End Class
End Namespace
Вопрос 9 из 30
Раздел «Внедрение зависимостей»: что здесь важнее локального удобства: какой контракт должен быть виден в коде?
Вопрос 10 из 30
Раздел «Внедрение зависимостей»: какое правило остаётся верным для современного Visual Basic?
Вопрос 11 из 30
Посмотрите на фрагмент по теме «Доменные сервисы». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Class PricingService
    Public Function Calculate(order As Order, policy As PricingPolicy) As Money
        Return policy.Apply(order.Items, order.CustomerTier)
    End Function
End Class
Вопрос 12 из 30
Раздел «Доменные сервисы»: что следует зафиксировать в ревью, чтобы ошибка не переехала из сборки в выполнение?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_3
    Class PricingService
        Public Function Calculate(reviewOrder As Order, reviewPolicy As PricingPolicy) As Money
            Return reviewPolicy.Apply(reviewOrder.Items, reviewOrder.CustomerTier)
        End Function
    End Class
End Namespace
Вопрос 13 из 30
Раздел «Доменные сервисы»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_3
    Class PricingService
        Public Function Calculate(edgeOrder As Order, edgePolicy As PricingPolicy) As Money
            Return edgePolicy.Apply(edgeOrder.Items, edgeOrder.CustomerTier)
        End Function
    End Class
End Namespace
Вопрос 14 из 30
Раздел «Доменные сервисы»: какой выбор не превращает скрытую ошибку в тихое продолжение работы?
Вопрос 15 из 30
Какое утверждение точнее отделяет «Доменные сервисы» от соседних механизмов?
Вопрос 16 из 30
Раздел «Модульность»: какой разбор этого кода останется точным после переименования переменных?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Namespace Billing
    Public Interface IBillingModule
        Function ChargeAsync(command As ChargeCommand) As Task(Of ChargeResult)
    End Interface
End Namespace
Вопрос 17 из 30
Раздел «Модульность»: на ревью предлагают упростить участок с Namespace. Какое замечание защищает поведение программы, а не стиль записи?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_4
    Namespace Billing
        Public Interface IBillingModule
            Function ChargeAsync(reviewCommand As ChargeCommand) As Task(Of ChargeResult)
        End Interface
    End Namespace
End Namespace
Вопрос 18 из 30
Какое свойство механизма «Модульность» нужно проверить на редком, но допустимом сценарии?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_4
    Namespace Billing
        Public Interface IBillingModule
            Function ChargeAsync(edgeCommand As ChargeCommand) As Task(Of ChargeResult)
        End Interface
    End Namespace
End Namespace
Вопрос 19 из 30
Раздел «Модульность»: какой вариант оставляет важное условие явным для следующего разработчика?
Вопрос 20 из 30
Какое правило по теме «Модульность» можно безопасно перенести из примера в реальный проект?
Вопрос 21 из 30
Посмотрите на фрагмент по теме «Контроль ресурсов». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Class ApplicationHost
    Private ReadOnly subscriptions As New List(Of IDisposable)
    Public Sub Start()
        subscriptions.Add(bus.Subscribe(Of OrderPaid)(AddressOf OnOrderPaid))
    End Sub
    Public Sub [Stop]()
        For Each item In subscriptions : item.Dispose() : Next
        subscriptions.Clear()
    End Sub
End Class
Вопрос 22 из 30
После рефакторинга код стал короче. Какое условие по теме «Контроль ресурсов» нельзя потерять?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_5
    Class ApplicationHost
        Private ReadOnly subscriptions As New List(Of IDisposable)
        Public Sub Start()
            subscriptions.Add(bus.Subscribe(Of OrderPaid)(AddressOf OnOrderPaid))
        End Sub
        Public Sub [Stop]()
            For Each reviewItem In subscriptions : reviewItem.Dispose() : Next
            subscriptions.Clear()
        End Sub
    End Class
End Namespace
Вопрос 23 из 30
Раздел «Контроль ресурсов»: какое допущение стоит нарушить отдельно, чтобы проверка действительно ловила ошибку?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_5
    Class ApplicationHost
        Private ReadOnly subscriptions As New List(Of IDisposable)
        Public Sub Start()
            subscriptions.Add(bus.Subscribe(Of OrderPaid)(AddressOf OnOrderPaid))
        End Sub
        Public Sub [Stop]()
            For Each edgeItem In subscriptions : edgeItem.Dispose() : Next
            subscriptions.Clear()
        End Sub
    End Class
End Namespace
Вопрос 24 из 30
Раздел «Контроль ресурсов»: какой подход сохраняет границу ответственности и делает отказ диагностируемым?
Вопрос 25 из 30
Раздел «Контроль ресурсов»: какой вывод можно использовать как основание для ревью кода?
Вопрос 26 из 30
Раздел «Масштабирование решения»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Class ImportCoordinator
    Private ReadOnly limiter As New SemaphoreSlim(8)
    Public Async Function ImportAsync(files As IEnumerable(Of String)) As Task
        Dim jobs = files.Select(Async Function(path)
                                    Await limiter.WaitAsync()
                                    Try
                                        Await importer.ImportAsync(path)
                                    Finally
                                        limiter.Release()
                                    End Try
                                End Function)
        Await Task.WhenAll(jobs)
    End Function
End Class
Вопрос 27 из 30
После рефакторинга код стал короче. Какое условие по теме «Масштабирование решения» нельзя потерять?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Strict On
Namespace ReviewCase29_6
    Class ImportCoordinator
        Private ReadOnly limiter As New SemaphoreSlim(9)
        Public Async Function ImportAsync(reviewFiles As IEnumerable(Of String)) As Task
            Dim reviewJobs = reviewFiles.Select(Async Function(path)
                                        Await limiter.WaitAsync()
                                        Try
                                            Await importer.ImportAsync(path)
                                        Finally
                                            limiter.Release()
                                        End Try
                                    End Function)
            Await Task.WhenAll(reviewJobs)
        End Function
    End Class
End Namespace
Вопрос 28 из 30
Раздел «Масштабирование решения»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · Архитектура крупного VB.NET-приложения
Option Explicit On
Option Infer On
Namespace BoundaryCase29_6
    Class ImportCoordinator
        Private ReadOnly limiter As New SemaphoreSlim(7)
        Public Async Function ImportAsync(edgeFiles As IEnumerable(Of String)) As Task
            Dim edgeJobs = edgeFiles.Select(Async Function(path)
                                        Await limiter.WaitAsync()
                                        Try
                                            Await importer.ImportAsync(path)
                                        Finally
                                            limiter.Release()
                                        End Try
                                    End Function)
            Await Task.WhenAll(edgeJobs)
        End Function
    End Class
End Namespace
Вопрос 29 из 30
Раздел «Масштабирование решения»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 30 из 30
Раздел «Масштабирование решения»: какой вывод описывает семантику, а не предпочтение в оформлении?

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

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

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

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