Кто-нибудь знает о каких-либо правилах/руководящих принципах именования, которые определяют, когда использовать префикс "Кому" (myVariable.ToList()
), префикс "Как" (myVariable.AsEnumerable()
) или префикс "Получить" (myVariable.GetHashCode()
)?
"To" vs "As" против "Get" Префикс метода
Ответ 1
Я предполагаю, что нет соглашения, поэтому просто используйте то, что лучше всего подходит для того, что вы делаете.
- "Кому" создает что-то новое/преобразует его
- "Как" это просто "другое представление" на том же f.e. используя
iterators
- "Get" - это геттер для всего остального.
Ответ 2
Мое понимание/соглашения:
"Кому" выполняет преобразование; Новый объект создается в памяти на основе данных, присущих вашему источнику.
"Как" выполняет литье; Одна и та же ссылка передается за "маской" другого типа.
"Get" выполняет почти все, что принимает в источнике, а основной продукт - преобразованный результат. Gets может выполнять вычисления, возвращать дочерние элементы, извлекать данные из хранилища, создавать объекты из состояния по умолчанию и т.д. Не все такие методы должны быть названы "Get", но большинство методов предназначено для вычисления, создания экземпляра, проекта или другого преобразовать, а затем вернуть продукт в качестве основной цели - "getters".
Ответ 3
- Когда
myObj
не относится кList
, префикс "Кому" для преобразования. - Когда
myObj
является подклассомEnumerable
, префикс "As", чтобы передать его как Enumerable - Если
myObj
не относится кList
, но он составляет/может составитьList
использовать префикс "Get"
Ответ 4
Если вы используете Entity Framework для операций CRUD в базе данных, то использование .ToList() будет выполнять ваш запрос прямо там, в отличие от использования AsEnumerable(), который будет использовать отложенное выполнение, пока вы на самом деле не попытаетесь получить доступ запись.
Тот, о котором я думал прямо с головы.
Ответ 5
As
- это переинтерпретация существующих данных. AsEnumerable
ничего не делает. Он реализован как return input;
.
To
подразумевает преобразование.
Get
не подразумевает ни одного из первых.
Вы найдете действительные отклонения от этих правил. Они не установлены в камне.
Ответ 6
Я бы сказал, что To
vs As
имеет больше общего с различиями типа class
vs interface
i e вы говорите AsEnumerable
, когда вы действительно хотите вернуть что-то, что реализует интерфейс.
ToList
на противоположном возвращает новый объект, представляющий текущее состояние текущего объекта, т.е. ToDictionary
просто другой способ представления одних и тех же данных.
Третьи методы Get
возвращают некоторые свойства объекта ИЛИ что-то о части его состояния, а не о полном состоянии.