В чем различия между глаголами «Найти» и «Получить» в методах репозитория или методах доступа к данным? - PullRequest
4 голосов
/ 11 октября 2011

Независимо от того, используете ли вы шаблон Repository с интерфейсом или просто реализуете методы DataAccess в приложении, я часто вижу методы с глаголом 'Get' или 'Find', предшествующим описанию метода.Я немного борюсь с различием между (2), потому что я вижу противоречивые примеры при просмотре примеров репозитория DDD или любой другой Архитектуры, использующей подобное соглашение об именах.Например, взгляните на следующее:

Function FindAllEmployees() As List(Of Employee)

Function GetAllEmployees() As List(Of Employee)

Давайте не будем слишком внимательно смотреть на тему «Сотрудник», это всего лишь пример;это может быть что угодно.Мне действительно интересно, есть ли какие-то рекомендации относительно того, когда описывать метод с глаголом «Get» или «Find» в начале.

Может кто-нибудь объяснить это или уточнить, пожалуйста?Спасибо!

Ответы [ 2 ]

5 голосов
/ 11 октября 2011

Для меня FindAllEmployees указывает, что он может принять предикат для фильтрации результатов, тогда как GetAllEmployees сделает это, вернет полный список.

3 голосов
/ 11 октября 2011

Get выдает ошибку, если она не существует (и обычно возвращает только 1), Find возвращает ноль (или пустое IEnumerable).

Не уверен, что это универсально - но это довольно ясно для меня. GetById, GetByName и т. Д. Предполагают, что совпадение существует (и обычно одно совпадение). FindByEmail, FindByDepartment не предполагают этого и обычно возвращают 0: n совпадений.

Я могу сделать исключение для метода, подобного GetAll, который не принимает параметров и возвращает совпадения 1: n, но выдает исключение для 0.

...