Многие считают extension-методы в C# 3.0 очень удачной находкой.
Многие от них просто в восторге.
Большинство выпускаемых сейчас фреймворков состоит на 50% из статических методов.
Мне кажется, что сами программисты Microsoft не осознают, что это ужасно.
Вы задумайтесь сами: extension-метод - это статический метод статического класса.
ООП? Наследование? Виртуальные функции? Если фреймворк состоит на 50% из extension-методов, он на 50% состоит из статических методов.
Такой код может быть хорош только в одном случае: если его не будут переделывать.
Я призываю 10 раз подумать, прежде чем собраться написать свой extension-метод и ответить хотя бы на один вопрос:
А не появится ли необходимость виртуализации работы этого метода?
Для тех кто в бронепоезде:
// ...
static bool Extension(this string s) { return true; }
static bool Extension(this object s) {return false; }
void Test()
{
object s ="sdfsdfs";
s.Extension(); // return false
}
// ...
Ситуацию спасут только мультиметоды, которые однако в С++ уже появились (или появятся?).
Все еще хочется писать extension-методы?