Есть ли какие-либо недостатки использования функций C# 3.0?

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

Так как мы нацелены на Платформу.NET 3.5, я не вижу причины этих ограничений. По-моему, возможно, единственный недостаток - то, что мои немного коллег и босс (также программист) должны были бы изучить некоторые основы C# 3.0, который не должен быть трудным. Что Вы думаете об этом? Действительно ли мой босс прав, и я пропускаю что-то? Есть ли какие-либо серьезные основания для такого ограничения в строительной компании, где C# является основным языком программирования?

22
задан BЈовић 23 December 2011 в 11:00
поделиться

10 ответов

вы можете просто:

var text_val = $('#second_child').text();

как указано в предыдущих ответах. но, поскольку «нужно захватить текстовое значение дочернего div», я предполагаю, что дочерний div id, вероятно, не всегда доступен. вместо этого можно попробовать следующее:

var text_val = $('#first').children().eq(1).text();

, где 1 - индекс дочернего div (поскольку отсчет начинается с нуля)

-121--2182195-

При выполнении Java-программы выполняется такой же «пользователь», как при выполнении проверок командной строки?

EDIT : Попробуйте скопировать файл в каталог, из которого выполняется программа, и проверить, может ли он прочитать его. После копирования файла в каталог выполнения можно также попробовать следующее:

InputStream in = getClass().getResourceAsStream("/gameTheoryAgentConfiguration.properties");
configuration.load(in);

(при условии, что в пути к классам указан «».)

-121--3095639-

У меня был аналогичный опыт (меня попросили не использовать Generics, потому что это может сбивать с толку моих коллег).

Дело в том, что мы сейчас используем дженерики, и нет у моих коллег проблем с ними. Возможно, они не понимали, как создавать общие классы, но они точно понимают, как их использовать.

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

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

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

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

10
ответ дан 29 November 2019 в 04:50
поделиться

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

  • Команда разработчиков не работает в полную силу.
  • Компания не получает выгоды от повышения эффективности / производительности.

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

7
ответ дан 29 November 2019 в 04:50
поделиться

Мне сказали, что эти функции нестандартны и сбивают с толку большинство разработчиков, а их полезность сомнительна. Мне было запрещено использовать только функции C # 2.0, и он также рассматривает возможность запрета анонимных методов.

Предположительно, это примерно означает «ваш начальник» ...

Эти функции сбивают меня с толку, и я не считаю их полезными, потому что я их не понимаю.

Что довольно симптоматично для парадокса Блаба (ну или просто лени). В любом случае в том, что он говорит, нет никакой ценности, и вам следует начать искать другую работу, если он продолжит идти по этому пути.

4
ответ дан 29 November 2019 в 04:50
поделиться

Если с этого момента проект строго соответствует C # 3+, то включение этих элементов не приведет к нарушению сборки.Однако перед их использованием вы должны знать следующее:

  • Вы не можете использовать их, если руководитель проекта принимает решение и голосует против.
  • Кроме того, вы должны использовать их там, где это значительно упрощает сопровождение кода.
  • Вы не должны использовать их способами, которые сбивают с толку или не нужны в том смысле, что они не существенно улучшают ремонтопригодность кода. Это означает, что вы не должны использовать их там, где код практически такой же или почти не улучшен.
3
ответ дан 29 November 2019 в 04:50
поделиться

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

3
ответ дан 29 November 2019 в 04:50
поделиться

Если бы Microsoft не определяла стандарт и это были функции, которые они добавили в язык, не принадлежащий Microsoft, я бы сказал, что ваш начальник может быть прав. Однако, поскольку Microsoft определяет язык и использует именно эти возможности при реализации значительных частей .NET 3.5 (и 4.0), я бы сказал, что было бы глупо игнорировать их. Вы можете не использовать некоторые из них -- var, например, может быть неприемлем во всех средах из-за стандартов кодирования -- но общая политика избегания новых возможностей кажется неразумной.

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

3
ответ дан 29 November 2019 в 04:50
поделиться

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

Ключевым словом var, конечно, можно злоупотреблять, но в большинстве случаев оно сокращает избыточный код. LINQ - это главное, что вы хотите получить от .Net 3.5 из-за огромной экономии времени на написание кода. Ваш начальник должен поощрять вас использовать его. Кроме того, библиотеки базовых классов теперь принимают делегаты в качестве параметров, так что вы будете сильно ограничивать себя, не используя их. Лямбды - это просто причудливый синтаксический сахар, чтобы сделать делегаты чище.

Я бы посоветовал вам Эффективная интеграция в команды разработчиков ПО и Лидерство на примере. Две действительно замечательные статьи о том, как работать с командами, которые боятся перемен.

2
ответ дан 29 November 2019 в 04:50
поделиться

Нравится вам это или нет, но если вы планируете использовать LINQ в любой ситуации, вам придется использовать некоторые спецификации языка C # 3.0.

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

Кроме того, исходя из моего опыта работы в руководящих командах, я Я обнаружил, что использование спецификаций 3.0 на самом деле помогло разработчикам читать и понимать кодовую базу. Разработчики тратят около недели на то, чтобы понять, что означает синтаксис, но как только они его получают, они предпочитают новый способ старому.

2
ответ дан 29 November 2019 в 04:50
поделиться

Я верю, что вы ищете этот плагин: equalityBottoms Бен Алман

-121--1880583-

Я вижу, что LinkedList реализует интерфейс Queue, но он будет только таким же быстрым, как и LinkedList?

Окрыление исходного кода, LinkedList - это O (1) для операций Queue.add, Queue.poll и Queue.peek.

Надеюсь, что это достаточно быстро.

-121--2548475-

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

У него есть точка зрения.

Следуя этой линии мысли, давайте сделаем правило против общих коллекций, так как Список < T > не имеет никакого смысла (угловые скобки? wtf?).

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

Черт возьми, давайте уничтожим наследство, так как оно так сложно в наши дни (не так ли? имеет-а? разве мы не можем просто дружить?).

И использование рекурсии является основанием для увольнения (Foo () вызывает Foo ()? Наверняка вы, наверное, шутите!).

Ошибка... назад к реальности.

Это не то, что функции C # 3.0 путают программистов, а то, что функции путают вашего босса . Он знаком с одной технологией и упорно отказывается с ней расставаться. Вы собираетесь войти в Сумеречную зону Blub Paradox :

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

И на самом деле, наш гипотетический Блюб программист не будет использовать ни один из их. Конечно, он не стал бы программировать в машинный язык. Вот что компиляторы предназначены для. А что касается Кобола, он не знает, как кто-либо может получить все, что с этим сделано. Это даже не делает иметь x (функция Blub по вашему выбору).

Пока наш гипотетический Блюб программист смотрит вниз мощность континуум, он знает, что смотрит вниз. Языки менее мощные, чем Blub очевидно, менее мощный, потому что они упускают какую-то функцию, которую он использовал кому. Но когда наш гипотетический Блюб программист смотрит в другой направление, вверх по степенному континууму, он не понимает, что смотрит вверх. Что он видит просто странные языки. Он вероятно, рассматривает их о эквивалентно по мощности Блюбу, но с все остальные волосатые вещи, брошенные также. Блуб достаточно хорош для него, потому что он думает в Блюбе.

Когда мы переходим к точке зрения программист, использующий любой из языки выше мощности континуум, однакомы находим, что он в повернуться смотрит вниз на Блуба. Как можно сделать что-нибудь в Блюбе? Это не так даже y.

C # 3.0 не является жестким. Конечно, вы можете злоупотреблять им, но это не трудно или сбивает с толку любого программиста с более чем недельным опытом работы с C # 3.0. Навыки вашего босса только что отстали, и он хочет поднять остальную команду до своего уровня. НЕ ПОЗВОЛЯЙ ЕМУ!

Продолжайте использовать анонимные функции, ключевое слово var, автоматические свойства и содержимое ваших сердец. Ты не потеряешь работу из-за этого. Если он злится на это, смейтесь.

3
ответ дан 29 November 2019 в 04:50
поделиться

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

Недавно я перешел из передового C # дома в C # дом, который работал в основном на dot.Net 1.1 и некоторых проектах 2.0, используя в основном только функции 1.1. К счастью, руководство держится подальше от кода. Большинству разработчиков нравятся все новые функции в новых фреймворках, у них просто нет времени или желания разбираться в них самостоятельно. Как только мне удалось показать им, как они могут облегчить себе жизнь, они начали использовать их сами, и мы перенесли несколько проектов, чтобы получить новые языковые функции и лучшие преимущества инструментов.

2
ответ дан 29 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

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