هل يستحق الانتقال من C# 2.0 إلى C# 3.0 هذا المشروع؟[مغلق]

StackOverflow https://stackoverflow.com/questions/170584

سؤال

لقد قرأت في Stack Overflow بعض الأشخاص الذين قاموا بالتحويل من C#2.0 إلى C#3، ولكن هل يستحق الأمر ذلك حقًا؟

لدي مشروع تم إنجازه بنسبة 75% قبل الدخول في مرحلة الصيانة.أنا أسأل نفسي ما إذا كان الأمر يستحق التبديل إلى C#3.0؟

تحديث:

سيكون للمشروع واجهة ويب الآن، لذا قبل الدخول في مرحلة الصيانة يتعين علينا تطوير جزء الويب (تم كل ذلك لأغراض داخلية باستخدام Windows Forms).سيتم إعادة استخدام معظم الأجزاء (الخلفية).قال معظم الناس أن الأمر لم يكن يستحق العناء في الماضي لأنه كان بالفعل عند 75%...ولكن الآن هل مازلت تعتقد أن الأمر لا يستحق كل هذا العناء؟

ما تم القيام به في نهاية المطاف

أخيرًا، نظرًا لأننا نواصل المشروع باستخدام واجهة الويب، فسوف نقوم بالتحديث إلى 3.5 للعام الجديد.شكرا لكم جميعا على كل ما تبذلونه من المدخلات.

هل كانت مفيدة؟

المحلول

لا، أنصح بعدم ذلك.أنصح بالبدء بـ 3.5 في المشاريع الجديدة فقط، ما لم يكن هناك سبب محدد بخلاف ذلك.لن تستفيد من الإصدار 3.5 بمجرد إعادة الترجمة، نظرًا لأن الكود الخاص بك مكتوب بالفعل (أو 75٪ منه على الأقل).

إذا كنت تريد الانتقال إلى الإصدار 3.5 في المستقبل، فيمكنك القيام بذلك بسهولة.بالطبع، سيكون لديك كود بأسلوب 2.0، ولكن ما تم فعله قد تم.

  • كن متحفظًا، لا تفعل شيئًا إلا إذا كنت في حاجة إليه.
  • التطبيق الذي يبلغ 75% في C#2.0 و 25% في C#3.0 ليس بالضبط وحشًا لطيفًا يجب صيانته.من المؤكد أن تطبيق C#2.0 بنسبة 100% هو أكثر قابلية للصيانة.

عندما تنوي البدء بمشروع جديد، قم بالتبديل بكل الوسائل!يعد إصدار الإطار الجديد مثيرًا للاهتمام للغاية ويوصى بالتبديل بشدة.

نصائح أخرى

إيضاح
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.

ولا ينبغي لنا أن نخلط بين الاثنين.

سي#3.0 مقابل سي#2.0
الآن، هل يستحق C#3.0 هذه الخطوة؟أود أن أقول أنه مع وجود طرق الامتداد وتعبيرات Lambda، فإن الإجابة هي نعم.تعمل هاتان الميزتان وحدهما على تسهيل القراءة وكتابة التعليمات البرمجية بشكل أسرع.أضف ذلك إلى الخصائص التي يتم تنفيذها تلقائيًا، وLINQ، والطرق الجزئية، وسيظهر C#3.0 أنه خطوة مفيدة.

ومع ذلك، ليس من المفيد بالضرورة نقل مشروع قائم.يجب عليك الموازنة بين الإيجابيات والسلبيات، خاصة فيما يتعلق بإدخال أخطاء جديدة وعدم الاستقرار، قبل أن تقرر ترحيل العمل الحالي.بالنسبة للمشاريع الجديدة، أود أن أقول البدء بـ C#3.0.

هل هناك أي ميزة C # 3.5 تريد بشدة في هذه المرحلة؟ :)

وإذا كان LINQ، يمكنك ان تعطي LINQBridge المحاولة .. مع تعدد استهداف استوديو وLINQBridge، عليك أن تكون قادرا على كتابة المحلي (LINQ إلى كائنات) الاستعلامات باستخدام القوة الكاملة للC # 3.0 مترجم وبعد سيتطلب البرامج الإطار فقط 2.0.

أعتقد أن الكثير من هذا سوف يعود إلى أسلوبك الشخصي.IMHO، أفضل ميزات C# 3.5 تتلخص في ما يلي

  1. تعبيرات لامدا
  2. لينك
  3. طرق التمديد

لا يزال رمز OO الخاص بي يميل إلى أن يبدو موجهًا وظيفيًا بعض الشيء.لذلك أرى أن الإصدار 3.5 يمثل فائدة كبيرة وهو بالتأكيد يستحق الترقية.

والأفضل من ذلك هو أنه من الممكن استخدام المترجم 3.5 لخفض الهدف CLR 2.0.يتيح لك هذا النشر بناءً على تثبيت 2.0 (مقابل تثبيت 3.0/3.5) باستخدام إطار العمل الجديد.يمكن تنفيذ كل ما سبق في هذا السيناريو إذا كنت ترغب في إضافة الأنواع المناسبة إلى برنامجك.

في رأيي، ليس هناك سبب وجيه لعدم التحول إلى 3.5.

وميزة القاتل الحقيقي هو أنه يمكنك الاستمرار في استهداف الإصدارات القديمة من وقت التشغيل (2.0+) أثناء استخدام كافة الميزات لغة جديدة. حتى تتمكن من استخدام عبارات جديدة لامدا، طرق الإرشاد، وأنواع مجهولة المصدر، وسائر الأشياء الجيدة. وإذا كان الزبائن لا تزال تستخدم في المقام الأول على الإطار 2.0، يمكنك الاستمرار في استهداف وقت سابق.

و(فقط لا تستخدم أي من الطبقات من الإطار 3.5، إذا كان لديك لاستهداف إصدارات وقت التشغيل السابقة).

وشخصيا، اعتقد انه اذا كنت تريد ان تفعل التطبيق واجهة المستخدم الرسومية سطح المكتب، وأفضل رهان هو استخدام الإطار 3.0 أو 3.5، منذ WPF هو أفضل مكتبة واجهة المستخدم لقد عملت مع (عن طريق تسديدة بعيدة).

ومن ناحية أخرى، إذا كنت قد كتبت بالفعل أكثر من واجهة المستخدم الرسومية الخاصة بك في WinForms عناصر، فإنك قد تكون مهتمة في إطار 3.5، والذي يسمح (محدود) اختلاط WinForms عناصر وعناصر واجهة المستخدم الرسومية WPF. يمكنك الحفاظ على عمل قمت به بالفعل، ولكن مع إضافة بعض اللمسات لطيفة هنا وهناك، في أي مكان من المنطقي، مع وجود ضوابط WPF.

وميزة أخرى يدوية الإطار 3.5 هي "المعدون مجموعة". التحقق من ذلك:

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

وأنيق، هاه؟

وكنت قد أحببت ذلك أفضل قليلا إذا كان أكثر من ذلك بقليل JSON مثل. ولكن هذا وظيفة مريحة للغاية على أية حال.

وأي يمكنك الحدث يستهدف هذا الرمز لوقت التشغيل 2.0!

وإذا كان المشروع قد اكتملت تقريبا، ربما لن تستفيد من الميزات الجديدة من 3.5. بالنسبة للمشروعات الجديدة، فمن المؤكد أنها تستحق نظرة.

وانها حقا يتوقف على هذا المشروع، الذي يكون الغرض منه ل، وماذا يفعل.

وسيكون من المأمون أن يخمن أن برنامج .NET Framework 2.0 على العديد من أجهزة الكمبيوتر من الإصدار 3.5.

وبالإضافة إلى ذلك، هناك أي شيء تحتاجه من .NET Framework 3.5 غير متوفر في 2.0 (مثل LINQ)؟ إذا كنت تتعامل مع الكثير من الاستفسارات والبيانات، وأود أن التبديل. ولكن مرة أخرى، ويعتمد على العملاء، وإذا كنت تهدف إلى الحفاظ على هذا التطبيق في المستقبل المنظور.

من وجهة نظر تقنية، كل إطار الإصدار 2 وانها القليل جدا من الجهد لتحقيقه. الاختلافات في 2.0، 3.0 و 3.5 ليست سوى <لأ href = "http://blogs.msdn.com/mohammadakif/archive/2006/12/03/net-3-0-different-versions-of-the-net -framework.aspx "يختلط =" نوفولو noreferrer "> إضافية متاحة مكتبة وبعض المترجم نحوي السكر.

وانها ليست مثل كنت بحاجة إلى تغيير أي شيء أكثر. من خلال استهداف الإطار 3.5 لديك المزيد من الخيارات.

ومن فريقك وجهة نظر: نعم انه يستحق ذلك. لا أحد يريد أن يعمل على رمز القواعد القديمة. بينما كنت في خضم التنمية، بالاضافة الى انك قد الاستفادة من التكنولوجيا مستقرة أكثر الحالية.

وانها حقا يتوقف على ما عليك القيام به. إذا تطلب مشروعك امدا التعبير حيث كنت الأجسام الاستعلام مع تركيب واضحة، يجب أن ننظر في 3.0.

وأنا أقرأ حاليا C # في العمق التي كتبها جون السكيت، وانه يأخذ نهج من وضع الى حل في C # 1.15، ثم تتطور الحل لتصوير وظائف جديدة والمفيدة التي تحصل في 2.0 و 3.0. وهذا النوع من التقدم أن يكون وسيلة مثالية للإجابة على أسئلتكم. الكتاب يقرأ جيدا جدا جدا اجد وأنا على الحصول من خلال ذلك بسرعة.

عليك أن تزن التكلفة مقابل المنفعة.أنت لا تقدم معلومات كافية عن مشروعك للسماح لنا بتقديم المشورة لك هنا، ولكن ضع في اعتبارك ما يلي:

  • تكلفة التحويل صغيرة جدًا.C# 3.0 متوافق تمامًا تقريبًا مع الإصدار 2.0 ويعمل على إطار العمل 2.0
  • تكون الفائدة أيضًا صغيرة جدًا إذا كان الترميز على وشك الانتهاء، ولكن قد تنمو على المدى الطويل.قد يكون من الأسهل تنفيذ ميزة جديدة قد يتعين عليك تنفيذها في المستقبل باستخدام Linq، على سبيل المثال.

ولقد قمنا بالتحول مرات عديدة. لأن معظمهم من تركيب واضحة من تعبيرات لامدا يجعل رمز أسهل لمتابعة (بالنسبة لي على أية حال).

وأنا لا تستخدم ReSharper الذي يجعل استخدام الجديد 3.5 ميزات المفاجئة كما غير قليل من المعرض يصل إلى اقتراحات إعادة الهيكلية التي كتبها ReSharper. باستخدام أداة مثل أن يجعل هذا الانتقال أسهل بكثير.

3.5 يبني على رأس 2.0، لذلك كان لديك أي مشاكل القفز مباشرة إلى 3.5.

وأود أن ... ليس هناك ضرر وتحصل على بعض الفوائد من الميزات الجديدة

وأنا لا أفهم كل ما الناس يقولون لا تفعل ذلك. الصافي 2.0 هو الحالي (CLR) وقت التشغيل. Framework 3.0 و. NET 3.5 على حد سواء تعمل على وقت التشغيل 2.0. الانتقال إلى .NET Framework 3.5 للحصول على ميزات C # 3.0 هو حرفيا مسألة تغيير المنسدلة واحدة في خصائص المشروع. (OK، ونشر وقت التشغيل 3.5 إلى الأجهزة المستهدفة الخاص بك إذا كنت تستخدم بعض 3.5 ميزات مثل LINQ، وما إذا كان تركيب 3.5 قضية ثم انها ليست مثل إجابة سهلة.)

وأنا لن يغير أي شيء إلا إذا كان لديك سبب وجيه لذلك؛ أي أن هناك علة أنه لا يمكن أن تعمل في جميع أنحاء في 2.0.

وترقية الإطار في هذه النقطة في وقت متأخر من هذا المشروع هو من المحتمل أن يسبب بعض المشاكل التي كنت حقا لا تحتاج في الوقت الراهن.

إذا كان لديك امتدادا للمشروع، قد يكون أمرا جيدا للتبديل الآن إلى الإصدار الأحدث من .NET، إلا أنا لن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top