Стоит ли переход с C # 2.0 на C # 3.0 для этого проекта? - PullRequest
18 голосов
/ 04 октября 2008

Я читал о переполнении стека некоторых людей, у которых есть переход с C # 2.0 на C # 3, но стоит ли это того?

У меня есть проект, который выполняется на 75% перед переходом на этап технического обслуживания. Я спрашиваю себя, стоит ли переходить на C # 3.0?

Обновление:

У проекта теперь будет веб-интерфейс, поэтому перед тем, как перейти к этапу обслуживания, мы должны разработать веб-часть (все было сделано для внутренних целей с помощью Windows Forms). Большинство частей будут повторно использованы (back-end). Большинство людей говорили, что в прошлом это не стоило того, потому что оно уже было на уровне 75% ... но теперь вы все еще думаете, что оно того не стоит?

Что наконец сделано

Наконец, так как мы продолжаем проект с веб-интерфейсом, мы обновим его до 3.5 на новый год. Спасибо всем за ваш вклад.

Ответы [ 16 ]

52 голосов
/ 04 октября 2008

Разъяснение
C # 3.5 не существует. Есть C # 1.0, C # 2.0 и C # 3.0.

Тогда есть .NET 1.0, .NET 1.1, .NET 2.0, .NET 3.0 и .NET 3.5.

Мы не должны путать их.

C # 3,0 против C # 2,0
Стоит ли переходить на C # 3.0? Я бы сказал, что при наличии методов Extension и лямбда-выражений ответ - да. Эти две функции упрощают чтение и ускорение написания кода. Добавьте это к автоматически реализованным свойствам, LINQ и частичным методам, и C # 3.0 покажет себя как полезный шаг.

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

23 голосов
/ 04 октября 2008

Нет, я бы не советовал. Я бы посоветовал запускать 3.5 только для новых проектов, если только нет особой причины. Вы не получите никакой пользы от 3.5, просто перекомпилировав, так как ваш код уже написан (или как минимум 75%).

Если вам потребуется перейти на 3.5 в будущем, вы можете легко это сделать. Конечно, у вас будет код в стиле 2.0, но что сделано, то сделано.

  • Будьте консервативны, не делайте что-либо, если вам это не нужно.
  • Приложение, которое на 75% в C # 2.0 и на 25% в C # 3.0, не совсем хорошее животное для поддержки. Приложение на 100% C # 2.0, безусловно, удобнее в обслуживании.

Когда вы собираетесь начать новый проект, тогда непременно переключайтесь! Новая версия фреймворка очень интересна, и этот переключатель настоятельно рекомендуется.

12 голосов
/ 04 октября 2008

Есть ли какая-либо особенность C # 3.5, которую вы сильно хотите на этом этапе? :)

Если это LINQ, вы можете попробовать LINQBridge . Благодаря многоцелевому нацеливанию Studio и LINQBridge вы сможете писать локальные (LINQ to Objects) запросы, используя всю мощь компилятора C # 3.0, и все же вашим программам потребуется только Framework 2.0.

6 голосов
/ 04 октября 2008

Я думаю, что многое зависит от вашего личного стиля. ИМХО, лучшие возможности C # 3.5 действительно сводятся к следующему

  1. Лямбда-выражения
  2. LINQ
  3. Методы расширения

Мой ОО-код все еще выглядит немного функционально ориентированным. Поэтому я считаю 3,5 огромным преимуществом, и оно определенно стоит обновления.

Что еще лучше, можно использовать компилятор 3.5 для снижения целевой CLR 2.0. Это позволяет выполнять развертывание на основе установки 2.0 (вместо установки 3.0 / 3.5) с использованием новой инфраструктуры. Все вышеперечисленное может быть сделано в этом сценарии, если вы хотите добавить соответствующие типы в вашу программу.

3 голосов
/ 05 октября 2008

На мой взгляд, нет веской причины не переходить на 3.5.

Настоящая особенность убийцы заключается в том, что вы можете продолжать ориентироваться на более старые версии среды выполнения (2.0+), используя все новые языковые функции. Таким образом, вы можете использовать новые лямбда-выражения, методы расширения, анонимные типы и другие полезные вещи. И если ваши клиенты по-прежнему в основном используют платформу 2.0, вы можете продолжить ориентироваться на более раннюю среду выполнения.

(Только не используйте ни один из классов из инфраструктуры 3.5, если вам нужно ориентироваться на более ранние версии времени выполнения.)

Лично я думаю, что если вы работаете с настольным GUI-приложением, лучше всего использовать фреймворк 3.0 или 3.5, так как WPF - лучшая библиотека пользовательского интерфейса, с которой я когда-либо работал (долгое время).

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

Другая удобная особенность фреймворка 3.5 - «Инициализаторы коллекций». Проверьте это:

var myDictionary = new Dictionary<String, String> {
   { "key-1", "value-1" },
   { "key-2", "value-2" },
   { "key-3", "value-3" },
};

Аккуратно, да?

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

Любое событие, которое вы можете назначить на этот код для среды выполнения 2.0!

2 голосов
/ 01 ноября 2008

Я сделал преобразование много раз. Главным образом потому, что понятный синтаксис из лямбда-выражений облегчает выполнение кода (во всяком случае, для меня).

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

2 голосов
/ 29 октября 2008

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

  • Стоимость конвертации довольно мала. C # 3.0 почти полностью обратно совместим с 2.0 и работает на платформе 2.0
  • также довольно мало, если кодирование почти завершено, но может расти в долгосрочной перспективе. Новая функция, которую вам, возможно, придется реализовать в будущем, может оказаться намного проще, например, с помощью Linq.
2 голосов
/ 09 октября 2008

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

В настоящее время я читаю C # Inth Depth Джона Скита, и он применяет подход к выкладыванию решения в C # 1.15, а затем развивает решение для отображения новой и полезной функциональности, которую вы получаете в 2.0 и 3.0. Этот тип прогрессирования будет идеальным средством для ответа на ваши вопросы. Книга тоже хорошо читается, поэтому я быстро ее изучаю.

2 голосов
/ 09 октября 2008

С технологической точки зрения, это все фреймворк версии 2, и это очень мало усилий для достижения. Различия в 2.0, 3.0 и 3.5 заключаются в дополнительном коде библиотеки и синтаксическом коде некоторых компиляторов.

Это не значит, что вам нужно что-то менять; с помощью таргетинга Framework 3.5 у вас есть больше вариантов.

С точки зрения ваших команд: Да, оно того стоит. Никто не хочет работать на старых кодовых базах. Пока вы в самом разгаре разработки, вы также можете использовать самые современные стабильные технологии.

2 голосов
/ 04 октября 2008

Это действительно зависит от проекта, для кого он предназначен и что он делает.

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

Кроме того, есть ли что-то, что вам нужно от .NET 3.5, которого нет в 2.0 (например, LINQ)? Если вы имеете дело с большим количеством запросов и данных, я бы переключился. Но опять же, зависит от клиента и от того, намерены ли вы сохранить это приложение в обозримом будущем.

...