Методы Расширения C# - Как далеко слишком далеко?

Возможно, вы просто добавили столбец в свои данные следующим образом:

Year <- format(as.Date(Entered_Date, "%d/%m/%Y"), "%Y")

15
задан thatismatt 16 December 2008 в 13:17
поделиться

7 ответов

Мне нравятся дополнительные методы много, но я действительно чувствую что, когда они используются за пределами LINQ, что они улучшают удобочитаемость за счет пригодности для обслуживания.

Берут 3.Days().FromNow() в качестве примера. Это замечательно выразительно, и любой мог прочитать этот код и сказать Вам точно, что он делает. Это - действительно красивая вещь. Как кодеры это - наша радость для написания кода, который самоописывает и выразительный так, чтобы это не требовало почти никаких комментариев и было удовольствием читать. Этот код является главным в этом отношении.

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

Дополнительные методы скрывают, "как" лучше выразить "какой". Я предполагаю, что это делает их обоюдоострым мечом, который лучше всего используется (как все вещи) умеренно.

8
ответ дан 1 December 2019 в 03:43
поделиться

Лично мне нравится интервал. К, я двойствен о международных Днях, и мне не нравится TimeSpan. FromNow.

мне не нравится то, что я рассматриваю как что-то вроде популярного товара для 'быстрых' интерфейсов, которые позволяют Вам написать псевдо английский код, но делают это путем реализации методов с именами, которые могут быть экранирующими в изоляции.

, Например, это не читает хорошо в меня:

TimeSpan.FromSeconds(4).FromNow()

Очевидно, это - субъективная вещь.

5
ответ дан 1 December 2019 в 03:43
поделиться

Во-первых, мое инстинктивное чувство: 3.Minutes.from_now полностью прохладные взгляды, но не демонстрируют, почему дополнительные методы хороши. Это также отражает мое общее мнение: прохладный, но я действительно никогда не пропускал их.

<час>

Вопрос: [действительно ли 111] промежуток или угол?

Пространства имен, на которые ссылаются через оператор использования "обычно" только, влияют на типы, теперь они внезапно решают что 3.Minutes средства.

, Таким образом, лучшее не должно "позволять им выйти".
Все общедоступные дополнительные методы в likely-to-be-referenced пространстве имен заканчивают тем, что были "довольно глобальны" - со всеми потенциальными проблемами, связанными с этим. Сохраните их внутренними к Вашему блоку или поместите их в отдельное пространство имен, которое добавляется к каждому файлу отдельно.

6
ответ дан 1 December 2019 в 03:43
поделиться

Я соглашаюсь с siz и склоняюсь консерватора по этой проблеме. Направляющим испекли такой материал в, таким образом, это не действительно это путающее никогда. Когда Вы пишете свои "дни" и "fromnow" методы, нет никакой гарантии, что Ваш код является бесплатной ошибкой. Кроме того, Вы добавляете зависимость к своему коду. При помещении дополнительных методов в их собственный файл Вам нужен тот файл в каждом проекте. В проекте необходимо включать тот проект каждый раз, когда Вам нужен он.

Однако для действительно простых дополнительных методов (как использование Jeff "уехал" или использование thatismatt days.fromnow выше), которые существуют в других платформах/мирах, я думаю, что это в порядке. Любой, кто знаком с датами, должен понять что "3. Дни ().FromNow ()" означают.

1
ответ дан 1 December 2019 в 03:43
поделиться

Я нахожусь на консервативной стороне спектра, по крайней мере в настоящее время, и против дополнительных методов. Это - просто синтаксический сахар, который, мне, не настолько важен. Я думаю, что это может также быть кошмар для младших разработчиков, если они плохо знакомы с C#. Я инкапсулировал бы расширения в своих собственных объектах или статических методах.

, Если Вы собираетесь использовать их, просто, не злоупотребляйте их к точке, что Вы делаете ее удобной для себя, но смешиваете с кем-либо еще, кто касается Вашего кода. :-)

0
ответ дан 1 December 2019 в 03:43
поделиться

Каждый язык имеет свое собственное перспектива на том, каков язык должен быть. Направляющие и Ruby разработаны с их собственными, очень отличными мнениями. PHP имеет явно различные мнения, в то время как делает C (++/#)..., как делает Visual Basic (хотя, по-видимому, нам не нравится их стиль).

баланс имеет многих, легко считанных, встроенные функции по сравнению с управлением основными элементами всем. Я не хотел бы Такого количества функций, что необходимо перейти к поиску каждый раз, когда Вы хотите сделать что-либо (и там получен, чтобы быть производительностью наверху к чрезмерно увеличенной в размерах платформе), но я лично люблю направляющие, потому что то, что это имеет, сохраняет меня много времени, разрабатывая.

я предполагаю то, что я говорю, вот то, что, если Вы разрабатывали язык, занять позицию, идут оттуда, и сборка в функциях Вы (или , Ваш целевой разработчик был бы) чаще всего использовать .

0
ответ дан 1 December 2019 в 03:43
поделиться

Мое персональное предпочтение состояло бы в том, чтобы использовать их экономно на данный момент и ожидать, чтобы видеть, как Microsoft и другие крупные организации используют их. Если мы начинаем видеть много кода, учебных руководств, и книги используют код как 3. Дни ().FromNow () это использует его много. Если только небольшое количество людей использует его, то Вы рискуете иметь свой код, являются чрезмерно трудными поддержать, потому что недостаточно людей знакомо с тем, как работают расширения.

На связанной ноте, интересно, как производительность выдерживает сравнение между нормальным для цикла и foreach один? Казалось бы, что второй метод включит большую дополнительную работу для компьютера, но я не достаточно знаком с понятием для знания наверняка.

0
ответ дан 1 December 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: