Подтвердить что ты не робот

"To" vs "As" против "Get" Префикс метода

Кто-нибудь знает о каких-либо правилах/руководящих принципах именования, которые определяют, когда использовать префикс "Кому" (myVariable.ToList()), префикс "Как" (myVariable.AsEnumerable()) или префикс "Получить" (myVariable.GetHashCode())?

4b9b3361

Ответ 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 возвращают некоторые свойства объекта ИЛИ что-то о части его состояния, а не о полном состоянии.