💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 8 из 30
Раздел «Пользовательские атрибуты»: какое допущение стоит нарушить отдельно, чтобы проверка действительно ловила ошибку?
Visual Basic / VB.NET Visual Basic · Reflection и атрибуты Копировать
Option Explicit On
Option Infer On
Namespace BoundaryCase22_2
<AttributeUsage(AttributeTargets.Class, AllowMultiple:=False, Inherited:=True)>
Class HandlerAttribute
Inherits Attribute
Public ReadOnly Property Name As String
Public Sub New(edgeName As String)
Me.Name = edgeName
End Sub
End Class
End Namespace
Зафиксировать ожидаемое поведение: при работе с Пользовательские атрибуты нарушение «Пользовательский Attribute хранит декларативные метаданные и сам ничего не исполняет» не меняет результат, если выполняется «потребитель обязан определить правила наследования, множественности и проверки значений».
Зафиксировать ожидаемое поведение: пользовательский Attribute хранит декларативные метаданные и сам ничего не исполняет; потребитель обязан определить правила наследования, множественности и проверки значений.
Зафиксировать ожидаемое поведение: пользовательский Attribute не хранит декларативные метаданные и сам ничего не исполняет; потребитель обязан определить правила наследования, множественности и проверки значений.
Зафиксировать ожидаемое поведение: при ревью Пользовательские атрибуты поведение «потребитель обязан определить правила наследования, множественности и проверки значений» можно оставить вызывающему коду, если явно выражено «Пользовательский Attribute хранит декларативные метаданные и сам ничего не исполняет».
Зафиксировать ожидаемое поведение: достаточно явно обеспечить «Пользовательский Attribute хранит декларативные метаданные и сам ничего не исполняет»; требование «потребитель обязан определить правила наследования, множественности и проверки значений» на поведение не влияет.
Вопрос 16 из 30
Раздел «Цена рефлексии»: что в этом коде определяет результат, а не случайное совпадение тестовых данных?
Visual Basic / VB.NET Visual Basic · Reflection и атрибуты Копировать
Class AccessorCache
Private ReadOnly cache As New ConcurrentDictionary(Of Type, PropertyInfo())
Public Function GetProperties(t As Type) As PropertyInfo()
Return cache.GetOrAdd(t, Function(x) x.GetProperties(BindingFlags.Public Or BindingFlags.Instance))
End Function
End Class
Наблюдаемое поведение: рефлексия не добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Наблюдаемое поведение: кэширование MethodInfo устраняет основную стоимость рефлексивного вызова, включая упаковку аргументов, проверки типов и Invoke.
Наблюдаемое поведение: рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Наблюдаемое поведение: если GetMethod не нашёл член, безопаснее сохранить Nothing в кэше и продолжить работу, чем остановить построение метаданных.
Наблюдаемое поведение: достаточно обеспечить «кэшировать следует проверенные метаданные»; условие «Рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения» можно отдельно не проверять.
Вопрос 17 из 30
Раздел «Цена рефлексии»: какой комментарий к изменению будет технически обоснован?
Visual Basic / VB.NET Visual Basic · Reflection и атрибуты Копировать
Option Strict On
Namespace ReviewCase22_4
Class AccessorCache
Private ReadOnly cache As New ConcurrentDictionary(Of Type, PropertyInfo())
Public Function GetProperties(t As Type) As PropertyInfo()
Return cache.GetOrAdd(t, Function(x) x.GetProperties(BindingFlags.Public Or BindingFlags.Instance))
End Function
End Class
End Namespace
Не менять условие: рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Не менять условие: кэширование MethodInfo устраняет основную стоимость рефлексивного вызова, включая упаковку аргументов, проверки типов и Invoke.
Не менять условие: если GetMethod не нашёл член, безопаснее сохранить Nothing в кэше и продолжить работу, чем остановить построение метаданных.
Не менять условие: достаточно обеспечить «кэшировать следует проверенные метаданные»; условие «Рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения» можно отдельно не проверять.
Не менять условие: рефлексия не добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Вопрос 18 из 30
Раздел «Цена рефлексии»: для фрагмента с AccessorCache добавляют регрессионный тест. Какой контракт он должен защищать?
Visual Basic / VB.NET Visual Basic · Reflection и атрибуты Копировать
Option Explicit On
Option Infer On
Namespace BoundaryCase22_4
Class AccessorCache
Private ReadOnly cache As New ConcurrentDictionary(Of Type, PropertyInfo())
Public Function GetProperties(t As Type) As PropertyInfo()
Return cache.GetOrAdd(t, Function(x) x.GetProperties(BindingFlags.Public Or BindingFlags.Instance))
End Function
End Class
End Namespace
Проверить на границе: достаточно обеспечить «кэшировать следует проверенные метаданные»; условие «Рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения» можно отдельно не проверять.
Проверить на границе: рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Проверить на границе: рефлексия не добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Проверить на границе: кэширование MethodInfo устраняет основную стоимость рефлексивного вызова, включая упаковку аргументов, проверки типов и Invoke.
Проверить на границе: если GetMethod не нашёл член, безопаснее сохранить Nothing в кэше и продолжить работу, чем остановить построение метаданных.
Вопрос 19 из 30
Какое решение соответствует реальному времени жизни объектов и правилам «Цена рефлексии»?
Сделать явным правилом модуля: рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Сделать явным правилом модуля: кэширование MethodInfo устраняет основную стоимость рефлексивного вызова, включая упаковку аргументов, проверки типов и Invoke.
Сделать явным правилом модуля: если GetMethod не нашёл член, безопаснее сохранить Nothing в кэше и продолжить работу, чем остановить построение метаданных.
Сделать явным правилом модуля: достаточно обеспечить «кэшировать следует проверенные метаданные»; условие «Рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения» можно отдельно не проверять.
Сделать явным правилом модуля: рефлексия не добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Вопрос 20 из 30
Раздел «Цена рефлексии»: какой вывод можно использовать как основание для ревью кода?
Надёжное обобщение: достаточно обеспечить «кэшировать следует проверенные метаданные»; условие «Рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения» можно отдельно не проверять.
Надёжное обобщение: рефлексия добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.
Надёжное обобщение: кэширование MethodInfo устраняет основную стоимость рефлексивного вызова, включая упаковку аргументов, проверки типов и Invoke.
Надёжное обобщение: если GetMethod не нашёл член, безопаснее сохранить Nothing в кэше и продолжить работу, чем остановить построение метаданных.
Надёжное обобщение: рефлексия не добавляет поиск, проверки, упаковку и сложность сопровождения; кэшировать следует проверенные метаданные, а не скрывать ошибку поиска пустым результатом.