День сто семидесятый. #BestPractices
Рекомендации по использованию методов расширения. Начало
1. У вас должна быть веская причина использовать метод расширения вместо экземплярного метода. Одна из таких причин - когда вы имеете дело с не принадлежащими вам типами, например, из сторонней библиотеки.
2. Используйте метод расширения, когда функциональность наиболее соответствует расширяемому типу. Например, разумно иметь метод расширения
3. Добавляйте методы расширения к интерфейсам, чтобы добавить общие функциональные возможности к классам, не имеющим общего базового класса. Яркий пример – методы
4. Используя серию методов расширения с тем же типом возврата, вы можете добиться синтаксиса функционального программирования. Например:
Продолжение следует…
Замечание: как и в большинстве руководств по стилю кодирования, вышеизложенное является сугубо личным мнением.
Источник: https://michaelscodingspot.com/
Рекомендации по использованию методов расширения. Начало
1. У вас должна быть веская причина использовать метод расширения вместо экземплярного метода. Одна из таких причин - когда вы имеете дело с не принадлежащими вам типами, например, из сторонней библиотеки.
2. Используйте метод расширения, когда функциональность наиболее соответствует расширяемому типу. Например, разумно иметь метод расширения
date.AddDays(numDays)
, который расширяет тип DateTime
. Но не имеет смысла делать наоборот: days.AddToDate(date)
, который расширяет int
.3. Добавляйте методы расширения к интерфейсам, чтобы добавить общие функциональные возможности к классам, не имеющим общего базового класса. Яркий пример – методы
LINQ
, расширяющие интерфейс IEnumerable
.4. Используя серию методов расширения с тем же типом возврата, вы можете добиться синтаксиса функционального программирования. Например:
public static IEnumerable<Customer> AboveAge(this IEnumerable<Customer> customers, int age)
{
return customers.Where(c => c.Age > age);
}
public static IEnumerable<Customer> OnlyMale(this IEnumerable<Customer> customers)
{
return customers.Where(c => c.Gender == "Male");
}
public static IEnumerable<Customer> OnlyFemale(this IEnumerable<Customer> customers)
{
return customers.Where(c => c.Gender == "Female");
}
// использование:
var potentialBuyers = customers.AboveAge(42).OnlyFemale();
Продолжение следует…
Замечание: как и в большинстве руководств по стилю кодирования, вышеизложенное является сугубо личным мнением.
Источник: https://michaelscodingspot.com/