Кто-нибудь знает о каких-либо правилах/руководящих принципах именования, которые определяют, когда использовать префикс "Кому" (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 возвращают некоторые свойства объекта ИЛИ что-то о части его состояния, а не о полном состоянии.