День сто семидесятый. #BestPractices

Рекомендации по использованию методов расширения. Начало

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/