سؤال

انا إعداد فئة على Visual Basic 2005 استهداف Visual Basic 6 المبرمجين يهاجرون إلى .صافي منصة.

أود نصيحة حول ما إذا كان يوصي بها دائما تمكين الخيار صارمة أو لم يكن.

لقد عملت حصرا مع الطراز C لغات البرمجة في الغالب Java و C#, لذلك بالنسبة لي صراحة الصب هو شيء أتوقع دائما علي أن أفعل لأنه لم يكن خيارا.
ومع ذلك لا ندرك قيمة العمل مع اللغة التي بنيت في دعم في وقت متأخر ملزم, بسبب عدم وجود أضرار واضحة عن أنواع في القانون وفي الواقع يوفر الوقت.وهذا مما يثبت شعبية نشر ديناميكية كتبته اللغات, حتى على .صافي منصة ديناميكية وقت تشغيل اللغة.

مع هذا في الاعتبار, أن شخص يقترب .صافي للمرة الأولى باستخدام VB.NET و مع VB6 الخلفية على الوصول إلى عقلية الحاجة إلى العمل مع الترجمة الوقت التحقق من نوع لأن هذا هو "أفضل الممارسات" في CLR?أو هو "موافق" إلى مواصلة التمتع بفوائد أواخر ملزمة ؟

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

المحلول

نعم!الخيار صارمة هو بالتأكيد أفضل الممارسات .صافي.التأكيد على أن .صافي هو في النواة بقوة كتبته منصة سوف يكون حتى DLR أكثر مدعوما تماما.مع استثناءات قليلة, كل Dim و Function يجب أن يكون صريح نوع أعلن للذهاب معها.أشياء مثل ينق أو بو و JScript هي الاستثناءات التي تثبت القاعدة.

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

  • لا تستخدم القديم وظائف سلسلة: LEN(), REPLACE(), TRIM(), الخ
  • المجرية الثآليل لم تعد الموصى بها. oMyObject و sMyString غير شرعية.وتبين لهم المرجعية في مايكروسوفت المبادئ التوجيهية تصميم إذا أنهم لا يؤمنون بك.
  • تأكد من أنها تعلم عن الجديد AndAlso/OrElse العوامل المنطقية
  • استعلامات بمعلمات الحديث ADO.Net.لا يمكن أن أؤكد هذا يكفي.يجب أن لا تحتاج إلى استدعاء CreateObject() مرة أخرى.
  • نطاق يعمل بشكل مختلف (و هو الأهم) في .صافي مما كان عليه في VB6.VB.Net لا يزال لديه وحدات لكنهم الآن أكثر مماثلة إلى فئة ثابتة.من المهم أن نفهم كيف النامية في وجوه المنحى بيئة مختلفة ، في مقابل الجزئي OOP الدعم المقدم من VB6.ليس هناك سبب وجيه بعد السماح طرق لتشغيل الفجار الأطوال.
  • تأكد من أنها تحصل على مقدمة في الوراثة واجهات (بما في ذلك IEnumeralbe(Of T)), و تعلم لماذا يجب أن لا تستخدم ArrayList مرة أخرى.

أنا يمكن أن تستمر, ولكن أنا فقط أشير لك إلى ملامح خفية من VB.Net السؤال لإغلاق هذه خرف.

نصائح أخرى

الوقت الذي يقضيه مع الخيار صارمة تمكين سوف يوفر لك كمية هائلة من التصحيح في وقت لاحق.

Option Strict من الواضح أنه لا يمكن استبدال وحدة جيدة الاختبار ولكن لا العكس.في حين أن اختبار وحدة يمكن كشف نفس الأخطاء Option Strict, هذا يعني أنه لا يوجد خطأ في وحدة اختبارات, اختبار وحدة يتم في كثير من الأحيان و في وقت مبكر ، الخ ....

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

باختصار لا يوجد ما يضمن أن وحدة الاختبارات صحيحة.ومن ناحية أخرى ، هناك ضمانة قوية أن هذا النوع التحقق التي يقوم بها المترجم هو الصحيح أو على الأقل أن الخلل (دون رادع مصفوفة التغاير ، البق مع المراجع الدائرية ...) معروفة و موثقة جيدا.

مبلغ آخر المتابعة: نعم ، Option Strict On هو بالتأكيد أفضل الممارسات. في الواقع ، لقد عملت لسنوات في المجتمعات المحلية على الانترنت مثل هذا واحد.كلما شخص بحاجة إلى المساعدة على التعليمات البرمجية التي من الواضح لم يكن لديك Option Strict تمكين كنا بأدب نقطة هذا و ترفض إعطاء أي مساعدة إضافية حتى تم إصلاح هذا.أنه يوفر الكثير من الوقت.في كثير من الأحيان ، المشكلة ذهب بعد هذا.هذا هو مشابه إلى حد ما باستخدام HTML الصحيحة عند طلب المساعدة في دعم HTML منتدى:غير صالحة HTML قد عمل, ولكن بعد ذلك مرة أخرى, قد لا يكون سبب المشاكل.ولذلك ، فإن العديد من المهنيين رفض مساعدة.

نعم!!!!

في رأيي, على حد سواء باعتبارها المطور ، كلية مدرب نعم.

فمن الأفضل أن تحصل في عادات جيدة من البداية ، يجعل العملية برمتها أسهل بكثير, و الخيار الصارم هو واحد من تلك العناصر التي في رأيي هو مطلوب عنصر.

وأضاف

هناك حرفيا طن من الأسباب التي يمكن أن تكون مدرجة لماذا, ولكن المفتاح هو أنه أفضل الممارسات, و عند تدريس لغة جديدة هو مفتاح تعلم أفضل الممارسات من البداية.

تذكر أن هناك مستويين هنا.

Option Explicit الخيار صارمة

والفرق الرئيسي بين الاثنين هو أن الخيار صارمة تعطيل VB التحويل التلقائي من أنواع مختلفة من البيانات.يجب أن بشكل صريح استخدام CType أو آخر تحويل البيانات وظيفة لتعيين متغير إلى نوع آخر.

لقد تم استخدام VB منذ 1.0 و بينما أنا يمكن أن نرى من هذه النقطة أعتقد أن الصارم هو متحمس paritcularily عند التعامل مع الكائنات التي نفذت أو ورثت واجهات مختلفة و دروس.

وأود أن تبدأ مع الصارم في الأولى و إذا كان يبدأ في الحصول على طريقك ثم ينزل إلى صريح.ولكن لا من أي وقت مضى على حد سواء إيقاف هذا الطريق يكمن الجنون المفرط التصحيح الوقت.

على مر السنين مع VB حد استخدام مزدوج لجميع النقطة العائمة المتغيرات.بهذه الطريقة يمكنك تجنب العديد من المشاكل مع التقريب و فقدان الدقة.في VB6 اعتدت طويلة كما كان عدد صحيح 32-بت, ولكن صحيح تعمل فقط كذلك في .صافي كما هو Int32.كما نوصي باستخدام Int32, Int16 ، وما إلى ذلك بدلا من عدد صحيح طويل ، وما إلى ذلك في حالة Microsoft في أي وقت تقرر إعادة تعريف هذه الكلمات الرئيسية.

انا ذاهب الى نختلف مع RS كونلي (عادية جدا).بلدي المفضل VB6 معلمو - فرانشيسكو Balena دان عبليمان - كل مكروه VB6 هذا التحويل التلقائي ، في صالح من Option Strict في .صافي.شهدت العديد من VB6 المبرمجين يعرفون التحويل التلقائي "الشر نوع الإكراه" (pdf), و سيكون مسرور التبديل على Option Strict.

انها في بعض الأحيان من الأفضل استخدام واحد وحدة صغيرة دون Option Strict, لتجنب الكثير من التعقيد انعكاس رمز.ولكن هذا هو الاستثناء الذي يثبت القاعدة.

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

ولهذا السبب أيضا دعم استخدام الخيار صارمة باعتبارها وسيلة للمساعدة في الحفاظ على الأخطاء وما يترتب على ذلك من تصحيحات عميقة في "وقت التصميم."

إذا كنت تستخدم وجود أنواع فحص ، ثم ربما كنت تريد الخيار صارمة على.إيقاف تشغيله يمكن أن يكون لها مزايا ، ولكن إذا كان عقلك لا ضبطها اكتشاف الأخطاء حيث أن المترجم عادة ما يشكو, ثم أود أن أقول أن ترك الأمر على.لقد عملت في VB.Net الكثير و يجب أن أقول أنه على الرغم من أنني أعمل مع خيارات صارمة إيقاف أكثر من مرة, لقد رأيت الكثير من الحالات حيث أنه تحول من شأنها أن تمنع تماما عدد قليل من البق.

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