Альтернативный способ показать, что вы ничего не возвращаете в методе

Я вроде как в тупике.

Допустим, у меня есть модуль A, который предоставляет некоторые методы, возвращающие объекты, и модуль B, который использует указанные методы из модуля A. Модуль A будет иметь ситуации, когда ему придется возвращать Nothing.

Проблема в том, что я не хочу ничего возвращать. Много, много книг, топ-кодеров и эвристиков расскажут вам. Тем не менее, использование исключений не допускается из-за массового использования модуля А. Это, очевидно, может привести к снижению производительности.

Наконец, мы не хотим использовать объект objet с автоинстанцированием и должны проверять внутреннее состояние, чтобы узнать, действительно ли это ничего (например, check-null...)

Что может быть альтернативой для модуля A, чтобы он мог возвращать что-то пустое (или ничего), и для всех, кто использует его, например, модуль B, необходимо проверить такой случай (например, подписанные исключения try-catch)?

Любая помощь будет по-настоящему оценена! У меня практически нет решения, и я хочу сделать что-то чистое, что сможет развиваться, не вызывая нежелательного поведения и ошибок. Спасибо

2 ответа

Это основано на мнении. Я лично считаю это вполне приемлемым для метода, чтобы ничего не возвращать

Dim user as MyUser = myClass.GetUser(id)
If user Is Nothing Then 
    ' Do something when GetUser fails to retrieve a user
End If

Другая обычная вещь, которую некоторые люди предпочитают делать, это возвращаться boolean от каждой функции

Dim user as MyUser 
If Not myClass.GetUser(id, user) Then
    ' Do something when GetUser fails to retrieve a user
End If

Оба метода полностью действительны, и вы можете использовать один или другой в зависимости от текущих потребностей. Одной вещью, которая менее приемлема кем-либо и по уважительной причине, является программирование на основе исключений.

Причина, по которой ноль / ничто часто не поощряется, заключается в том, что это заставляет клиентов проверять ноль, что является плохой практикой.

Однако это зависит от конкретного случая, является ли возвращение Nothing значимым для вашей проблемной области.

Другой подход, который является более ООП, заключается в использовании шаблона NullObject - тогда клиенты могут безопасно вызывать методы для возвращаемого объекта, не беспокоясь о том, является ли он фактически Ничем или нет.

Другие вопросы по тегам