💡 Инструкция: Выберите один ответ из пяти. На тест отведено 70 минут; после ответа можно открыть объяснение.
Вопрос 6 из 25
Раздел «Ограничения обобщённых типов»: что в этом коде определяет результат, а не случайное совпадение тестовых данных?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Class Factory(Of T As {Class, New})
Public Function Create() As T
Return New T()
End Function
End Class
Контракт Ограничения обобщённых типов можно сократить до «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом»; часть «лишнее ограничение неоправданно сужает применение» остаётся лишь рекомендацией.
Достаточно выполнить одно из двух условий: «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом» или «лишнее ограничение неоправданно сужает применение».
В обобщённом коде полезно задавать максимально строгие ограничения заранее: это ускоряет выполнение и не сужает повторное использование.
Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно сужает применение.
Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно не сужает применение.
Вопрос 7 из 25
Раздел «Ограничения обобщённых типов»: какое ограничение нельзя убрать только потому, что обычный пример проходит?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Strict On
Namespace ReviewCase11_2
Class Factory(Of T As {Class, New})
Public Function Create() As T
Return New T()
End Function
End Class
End Namespace
Не менять условие: контракт Ограничения обобщённых типов можно сократить до «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом»; часть «лишнее ограничение неоправданно сужает применение» остаётся лишь рекомендацией.
Не менять условие: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно не сужает применение.
Не менять условие: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно сужает применение.
Не менять условие: достаточно выполнить одно из двух условий: «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом» или «лишнее ограничение неоправданно сужает применение».
Не менять условие: в обобщённом коде полезно задавать максимально строгие ограничения заранее: это ускоряет выполнение и не сужает повторное использование.
Вопрос 8 из 25
Раздел «Ограничения обобщённых типов»: какой результат следует зафиксировать до запуска отрицательного сценария?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Explicit On
Option Infer On
Namespace BoundaryCase11_2
Class Factory(Of T As {Class, New})
Public Function Create() As T
Return New T()
End Function
End Class
End Namespace
Добавить регрессионную проверку: достаточно выполнить одно из двух условий: «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом» или «лишнее ограничение неоправданно сужает применение».
Добавить регрессионную проверку: контракт Ограничения обобщённых типов можно сократить до «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом»; часть «лишнее ограничение неоправданно сужает применение» остаётся лишь рекомендацией.
Добавить регрессионную проверку: в обобщённом коде полезно задавать максимально строгие ограничения заранее: это ускоряет выполнение и не сужает повторное использование.
Добавить регрессионную проверку: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно не сужает применение.
Добавить регрессионную проверку: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно сужает применение.
Вопрос 9 из 25
Раздел «Ограничения обобщённых типов»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Закрепить рабочее решение: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно сужает применение.
Закрепить рабочее решение: достаточно выполнить одно из двух условий: «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом» или «лишнее ограничение неоправданно сужает применение».
Закрепить рабочее решение: в обобщённом коде полезно задавать максимально строгие ограничения заранее: это ускоряет выполнение и не сужает повторное использование.
Закрепить рабочее решение: контракт Ограничения обобщённых типов можно сократить до «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом»; часть «лишнее ограничение неоправданно сужает применение» остаётся лишь рекомендацией.
Закрепить рабочее решение: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно не сужает применение.
Вопрос 10 из 25
Раздел «Ограничения обобщённых типов»: какое правило остаётся верным для современного Visual Basic?
Надёжное обобщение: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно сужает применение.
Надёжное обобщение: в обобщённом коде полезно задавать максимально строгие ограничения заранее: это ускоряет выполнение и не сужает повторное использование.
Надёжное обобщение: контракт Ограничения обобщённых типов можно сократить до «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом»; часть «лишнее ограничение неоправданно сужает применение» остаётся лишь рекомендацией.
Надёжное обобщение: ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом; лишнее ограничение неоправданно не сужает применение.
Надёжное обобщение: достаточно выполнить одно из двух условий: «Ограничения As Class, Structure, New или базовый тип дают обобщённому коду только те операции, которые гарантированы контрактом» или «лишнее ограничение неоправданно сужает применение».
Вопрос 11 из 25
Раздел «Обобщённые методы»: код использует FirstOrDefaultValue. Какой вывод останется верным при других допустимых входных данных?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Module Demo
Function FirstOrDefaultValue(Of T)(items As IEnumerable(Of T)) As T
For Each item In items
Return item
Next
Return Nothing
End Function
Sub Main()
Dim empty = Array.Empty(Of Integer)()
Console.WriteLine(FirstOrDefaultValue(empty))
End Sub
End Module
Наблюдаемое поведение: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Наблюдаемое поведение: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T не превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Наблюдаемое поведение: обобщённый метод не сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Наблюдаемое поведение: обобщённый метод сохраняет тип T в сигнатуре, но может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Наблюдаемое поведение: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому нулевое значение лучше выражать отдельным контрактом.
Вопрос 12 из 25
Раздел «Обобщённые методы»: какую договорённость важнее сохранить, чем выиграть несколько строк кода?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Strict On
Namespace ReviewCase11_3
Module Demo
Function FirstOrDefaultValue(Of T)(reviewItems As IEnumerable(Of T)) As T
For Each reviewItem In reviewItems
Return reviewItem
Next
Return Nothing
End Function
Sub Main()
Dim reviewEmpty = Array.Empty(Of Integer)()
Console.WriteLine(FirstOrDefaultValue(reviewEmpty))
End Sub
End Module
End Namespace
Сохранить на ревью: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Сохранить на ревью: обобщённый метод сохраняет тип T в сигнатуре, но может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Сохранить на ревью: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T не превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Сохранить на ревью: обобщённый метод не сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Сохранить на ревью: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому нулевое значение лучше выражать отдельным контрактом.
Вопрос 13 из 25
Раздел «Обобщённые методы»: какой результат следует зафиксировать до запуска отрицательного сценария?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Explicit On
Option Infer On
Namespace BoundaryCase11_3
Module Demo
Function FirstOrDefaultValue(Of T)(edgeItems As IEnumerable(Of T)) As T
For Each edgeItem In edgeItems
Return edgeItem
Next
Return Nothing
End Function
Sub Main()
Dim edgeEmpty = Array.Empty(Of Integer)()
Console.WriteLine(FirstOrDefaultValue(edgeEmpty))
End Sub
End Module
End Namespace
Закрепить тестом: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T не превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Закрепить тестом: обобщённый метод сохраняет тип T в сигнатуре, но может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Закрепить тестом: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому нулевое значение лучше выражать отдельным контрактом.
Закрепить тестом: обобщённый метод не сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Закрепить тестом: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Вопрос 14 из 25
Раздел «Обобщённые методы»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Оставить в коде и тестах условие: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T не превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Оставить в коде и тестах условие: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Оставить в коде и тестах условие: обобщённый метод не сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Оставить в коде и тестах условие: обобщённый метод сохраняет тип T в сигнатуре, но может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Оставить в коде и тестах условие: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому нулевое значение лучше выражать отдельным контрактом.
Вопрос 15 из 25
Какое утверждение о «Обобщённые методы» выдерживает изменение имён и входных данных?
Технически точный принцип: обобщённый метод сохраняет тип T в сигнатуре, но может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Технически точный принцип: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому нулевое значение лучше выражать отдельным контрактом.
Технически точный принцип: обобщённый метод не сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Технически точный принцип: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T не превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Технически точный принцип: обобщённый метод сохраняет тип T в сигнатуре, но не может одинаково обозначить отсутствие для ссылочных типов и типов значений: возврат Nothing для T превращается в значение по умолчанию, поэтому пустой результат лучше выражать отдельным контрактом.
Вопрос 21 из 25
Не запуская фрагмент, выберите объяснение, которое учитывает весь механизм «Пограничные случаи».
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Module Demo
Function MaxValue(Of T As IComparable(Of T))(items As IEnumerable(Of T)) As T
Using it = items.GetEnumerator()
If Not it.MoveNext() Then Throw New InvalidOperationException("empty")
Dim best = it.Current
While it.MoveNext()
If it.Current.CompareTo(best) > 0 Then best = it.Current
End While
Return best
End Using
End Function
End Module
Наблюдаемое поведение: обобщённый код не должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Наблюдаемое поведение: если обычный пример подтверждает «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок», вывод «успешный пример с одним классом не доказывает универсальность» можно распространить на любые входы.
Наблюдаемое поведение: в разделе Пограничные случаи выполнение «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок» означает, что среда автоматически обеспечивает «успешный пример с одним классом не доказывает универсальность».
Наблюдаемое поведение: обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Наблюдаемое поведение: если обобщённый метод прошёл тесты с одним ссылочным типом, отдельные проверки Nothing, структур и пустых последовательностей избыточны.
Вопрос 22 из 25
Раздел «Пограничные случаи»: на ревью предлагают упростить участок с MaxValue. Какое замечание защищает поведение программы, а не стиль записи?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Strict On
Namespace ReviewCase11_5
Module Demo
Function MaxValue(Of T As IComparable(Of T))(reviewItems As IEnumerable(Of T)) As T
Using it = reviewItems.GetEnumerator()
If Not it.MoveNext() Then Throw New InvalidOperationException("empty")
Dim reviewBest = it.Current
While it.MoveNext()
If it.Current.CompareTo(reviewBest) > 0 Then reviewBest = it.Current
End While
Return reviewBest
End Using
End Function
End Module
End Namespace
Сохранить на ревью: обобщённый код не должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Сохранить на ревью: если обобщённый метод прошёл тесты с одним ссылочным типом, отдельные проверки Nothing, структур и пустых последовательностей избыточны.
Сохранить на ревью: в разделе Пограничные случаи выполнение «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок» означает, что среда автоматически обеспечивает «успешный пример с одним классом не доказывает универсальность».
Сохранить на ревью: если обычный пример подтверждает «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок», вывод «успешный пример с одним классом не доказывает универсальность» можно распространить на любые входы.
Сохранить на ревью: обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Вопрос 23 из 25
Раздел «Пограничные случаи»: обычный сценарий проходит. Что следует закрепить отдельным граничным тестом?
Visual Basic / VB.NET Visual Basic · Обобщения и ограничения типов Копировать
Option Explicit On
Option Infer On
Namespace BoundaryCase11_5
Module Demo
Function MaxValue(Of T As IComparable(Of T))(edgeItems As IEnumerable(Of T)) As T
Using it = edgeItems.GetEnumerator()
If Not it.MoveNext() Then Throw New InvalidOperationException("empty")
Dim edgeBest = it.Current
While it.MoveNext()
If it.Current.CompareTo(edgeBest) > 0 Then edgeBest = it.Current
End While
Return edgeBest
End Using
End Function
End Module
End Namespace
Закрепить тестом: в разделе Пограничные случаи выполнение «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок» означает, что среда автоматически обеспечивает «успешный пример с одним классом не доказывает универсальность».
Закрепить тестом: если обобщённый метод прошёл тесты с одним ссылочным типом, отдельные проверки Nothing, структур и пустых последовательностей избыточны.
Закрепить тестом: если обычный пример подтверждает «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок», вывод «успешный пример с одним классом не доказывает универсальность» можно распространить на любые входы.
Закрепить тестом: обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Закрепить тестом: обобщённый код не должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Вопрос 24 из 25
Раздел «Пограничные случаи»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Закрепить рабочее решение: если обычный пример подтверждает «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок», вывод «успешный пример с одним классом не доказывает универсальность» можно распространить на любые входы.
Закрепить рабочее решение: обобщённый код не должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Закрепить рабочее решение: в разделе Пограничные случаи выполнение «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок» означает, что среда автоматически обеспечивает «успешный пример с одним классом не доказывает универсальность».
Закрепить рабочее решение: обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Закрепить рабочее решение: если обобщённый метод прошёл тесты с одним ссылочным типом, отдельные проверки Nothing, структур и пустых последовательностей избыточны.
Вопрос 25 из 25
Раздел «Пограничные случаи»: какое правило остаётся верным для современного Visual Basic?
Технически точный принцип: если обобщённый метод прошёл тесты с одним ссылочным типом, отдельные проверки Nothing, структур и пустых последовательностей избыточны.
Технически точный принцип: обобщённый код не должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.
Технически точный принцип: в разделе Пограничные случаи выполнение «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок» означает, что среда автоматически обеспечивает «успешный пример с одним классом не доказывает универсальность».
Технически точный принцип: если обычный пример подтверждает «Обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок», вывод «успешный пример с одним классом не доказывает универсальность» можно распространить на любые входы.
Технически точный принцип: обобщённый код должен отдельно проверять пустые последовательности, Nothing, типы значений и ссылок; успешный пример с одним классом не доказывает универсальность.