2009-04-24 3 views
3

Я стараюсь уклоняться от методов расширения (на C#), так как это нарушает принцип когерентности программного обеспечения.Разве методы расширения нарушают принципы разработки программного обеспечения?

Тогда, почему это так? или мое понимание не так?

+1

Не задумывайтесь над тем, почему это нарушит «когезию кода», нежели, скажем, наследование ОО? –

ответ

11

Наоборот, я считаю, что разумное использование методов расширения улучшает когезию кода, так как вы можете совместно использовать методы и классы, которые выполняют связанные задачи. Ситуация ничем не отличается от бесплатных (статических) методов и поиска Koenig в C++, расширение доступа с . - это просто синтаксический сахар.

+2

+1, точно. Это синтаксический сахар по статическому методу, и именно поэтому его следует использовать как. –

+0

Единственная слегка уродливая вещь заключается в том, что «вызывающий» является неявным аргументом, что не совсем очевидно. На практике это не особенно важно. – nicodemus13

8

Методы расширения - это как инструмент в вашем арсенале. При разумном использовании они являются мощным дополнением и позволяют писать вещи, которые были бы неуклюжими, чтобы выразить иначе. Используются плохо, они неловкие костыли, чтобы сшить вещи вместе.

Это говорит о том, что я не согласен с вашим заявлением о том, что он нарушает целостность кодов - я думаю, что это на самом деле совсем наоборот. Если у вас не было методов расширения, вам придется использовать классы утилиты, разбросанные по всему вашему коду.

1

Я не думаю, что методы расширения нарушают целостность кода не более, чем группа статических методов. Потому что их основные методы расширения - это всего лишь группа статических методов. Компилятор C# и VB.Net просто обеспечивает хороший дружественный синтаксис для них.

Люди создают статические методы полезности для классов, которые они не контролируют в течение довольно длительного времени, и они вписываются в хорошо установленные технические практики.

Смежные вопросы