لماذا يجب عليك إزالة C# غير الضرورية باستخدام التوجيهات؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

على سبيل المثال، نادراً ما أحتاج إلى:

using System.Text;

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

أيضًا، هل يحدث أي فرق على الإطلاق إذا تم استخدام نفس توجيه الاستخدام في ملف واحد فقط مقابل ملف واحد فقط؟معظم/كل الملفات؟


يحرر:لاحظ أن هذا السؤال لا يتعلق بالمفهوم غير ذي الصلة المسمى أ باستخدام البيان, ، مصمم لمساعدة الشخص على إدارة الموارد من خلال التأكد من أنه عندما يخرج كائن ما عن النطاق، فإنه IDisposable.Dispose تسمى الطريقة .يرى استخدامات "استخدام" في C#.

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

المحلول

لن يغير أي شيء عند تشغيل البرنامج.يتم تحميل كل ما هو مطلوب عند الطلب.لذا، حتى لو كان لديك عبارة الاستخدام هذه، إلا إذا كنت تستخدم نوعًا بالفعل في مساحة الاسم/التجميع، فلن يتم تحميل التجميع الذي يرتبط به عبارة الاستخدام.

بشكل أساسي، إنه فقط للتنظيف حسب التفضيل الشخصي.

نصائح أخرى

هناك نكون بعض الأسباب لإزالة الاستخدام (الاستخدامات)/مساحات الأسماء غير المستخدمة، إلى جانب تفضيلات البرمجة:

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

ما إزالة مساحات الأسماء غير المستخدمة متعود يفعل:

  • تغيير بأي شكل من الأشكال إخراج المترجم.
  • تغيير بأي شكل من الأشكال تنفيذ البرنامج المترجم (تحميل أسرع، أو أداء أفضل).

التجميع الناتج هو نفسه مع إزالة الاستخدام (الاستخدامات) غير المستخدمة أو بدونها.

نظافة الكود يكون مهم.

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

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

لا يوجد بناء IL يتوافق مع using.وهكذا، using لا تزيد البيانات من ذاكرة التطبيق الخاص بك، حيث لا يوجد أي تعليمات برمجية أو بيانات يتم إنشاؤها لها.

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

وبالتالي، فإن التأثير السلبي الحقيقي الوحيد لوجود using البيانات التي لا تحتاج إليها موجودة في نظام التحسس الذكي، حيث تتزايد قائمة التطابقات المحتملة لإكمالها أثناء الكتابة.

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

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

لن يستخدم التطبيق الخاص بك المزيد من الذاكرة.إنه للمترجم العثور على الفئات التي تستخدمها في ملفات التعليمات البرمجية.إنه حقًا لا يؤلم بعد عدم النظافة.

إنه تفضيل شخصي في المقام الأول.أقوم بتنظيفها بنفسي (يقوم Resharper بعمل جيد بإخباري عندما يكون هناك عبارات استخدام غير ضرورية).

يمكن للمرء أن يقول أنه قد يقلل من الوقت اللازم للتجميع، ولكن مع سرعة الكمبيوتر والمترجم هذه الأيام، لن يكون له أي تأثير ملموس.

ترك اضافية using التوجيهات على ما يرام.هناك قيمة قليلة في إزالتها، ولكن ليس كثيرًا.على سبيل المثال، فهو يجعل قوائم إكمال IntelliSense الخاصة بي أقصر، وبالتالي يسهل التنقل فيها.

لا تتأثر التجميعات المترجمة بالأشياء الدخيلة using التوجيهات.

في بعض الأحيان أضعهم داخل أ #region, ، وتركها منهارًا؛وهذا يجعل عرض الملف أكثر نظافة قليلاً.المنظمة البحرية الدولية (IMO)، يعد هذا أحد الاستخدامات الجيدة القليلة لـ #region.

إذا كنت ترغب في الحفاظ على نظافة التعليمات البرمجية الخاصة بك، وعدم استخدامها using يجب إزالة البيانات من الملف.تظهر الفوائد واضحة جدًا عندما تعمل ضمن فريق تعاوني يحتاج إلى فهم التعليمات البرمجية الخاصة بك، وأعتقد أنه يجب الحفاظ على التعليمات البرمجية الخاصة بك بالكامل، والتعليمات البرمجية الأقل = عمل أقل، والفوائد طويلة المدى.

يتم استخدامها فقط كاختصار.على سبيل المثال، عليك أن تكتب:System.Int32 في كل مرة إذا لم يكن لديك نظام مستخدم؛على القمة.

تؤدي إزالة الرموز غير المستخدمة إلى جعل التعليمات البرمجية الخاصة بك تبدو أكثر نظافة.

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

يتيح لك وجود مساحات الأسماء التي تستخدمها فعليًا فقط الاحتفاظ بتوثيق التعليمات البرمجية الخاصة بك.

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

إذا كان لديك مساحات أسماء غير مستخدمة، فهذا لا يعني شيئًا عند إجراء البحث.

أنا أعمل الآن على تنظيف مساحات الأسماء، لأنني أُسأل باستمرار عن أجزاء التطبيق التي تصل إلى نفس البيانات بطريقة أو بأخرى.

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

لا أستطيع التفكير في طريقة أبسط للقيام بذلك مرة واحدة.

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

لا تؤثر عبارة "الاستخدام" على الأداء لأنها مجرد أداة مساعدة في تأهيل أسماء معرفاتك.لذلك بدلاً من الاضطرار إلى الكتابة، System.IO.Path.Combine(...), ، يمكنك ببساطة الكتابة، المسار.الجمع (...) اذا كنت تمتلك باستخدام System.IO.

لا تنس أن المترجم يقوم بالكثير من العمل لتحسين كل شيء عند إنشاء مشروعك.يتم استخدام ذلك في الكثير من الأماكن أو 1 لا ينبغي أن يفعل شيئًا مختلفًا بمجرد تجميعه.

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