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

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

  •  08-07-2019
  •  | 
  •  

سؤال

أنا أتساءل إذا كان هناك أي أسباب (وبصرف النظر عن ترتيب التعليمات البرمجية المصدر) لماذا للمطورين استخدام "إزالة غير المستخدمة Usings"الميزة في Visual Studio عام 2008 ؟

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

المحلول

وهناك عدد قليل من الأسباب كنت تريد أن تأخذ بها.

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

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

نصائح أخرى

وأود أن أقول بل على العكس تماما - انها مفيدة للغاية لإزالة، باستخدام عبارات غير الضرورية لزوم لها

.

وتخيل لديك للذهاب إلى التعليمات البرمجية الخاصة بك في 3 و 6 و 9 أشهر - أو أي شخص آخر لديه لتولي التعليمات البرمجية الخاصة بك والحفاظ عليه.

إذا كان لديك قائمة طويلة وغسل الملابس الكبيرة لاستخدام البيان أن ليست هناك حاجة حقا، والنظر في قانون يمكن أن يكون مربكا للغاية. لماذا هو أن تستخدم في ذلك، إذا تم استخدام شيء من ذلك مساحة الاسم ؟؟

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

ومارك

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

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

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

ونحن نستخدم عملية بناء الآلي، وبالتالي أي تغيير لدينا مستودع SVN من شأنه أن يولد تغييرات أننا لا يمكن أن تصل إلى المشروعات / البق / القضايا، وسوف يؤدي آليا يبني والنشرات التي سلمت أي تغيير وظيفي مع الإصدارات السابقة.

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

إذا ألقي نظرة على الاستخدام السليم للرسملة anachronyms (أي ABCD -> ABCD). ثم لا بد لي أن تأخذ في الاعتبار أن Resharper لا ريفاكتور أي من ملفات XML التي نستخدمها أن أسماء فئة مرجع

وهكذا، وبعد هذه التلميحات ليست كما مستقيم إلى الأمام كما يظهر، وينبغي أن يعامل باحترام.

وخيارات أقل في المنبثقة التحسس (خصوصا إذا احتوت مساحات الكثير من أساليب الإرشاد).

وينبغي أن يكون نظريا التحسس بشكل أسرع أيضا.

وبالإضافة إلى الأسباب التي أعطيت بالفعل، فإنه يمنع الصراعات تسمية لا لزوم لها. النظر في هذا الملف:

using System.IO;
using System.Windows.Shapes;

namespace LicenseTester
{
    public static class Example
    {
        private static string temporaryPath = Path.GetTempFileName();
    }
}

وهذا الرمز لا ترجمة لأن كلا مساحات الأسماء System.IO و System.Windows.Shapes كل تحتوي على فئة تدعى مسار. نحن يمكن إصلاحه باستخدام مسار الطبقة كامل،

        private static string temporaryPath = System.IO.Path.GetTempFileName();

وأو أننا يمكن ببساطة إزالة using System.Windows.Shapes; الخط.

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

وكما أنه يساعد على منع تبعيات دائرية كاذبة، على افتراض انك ايضا قادرة على إزالة بعض الإشارات دلل / المشروع من المشروع بعد إزالة usings غير المستخدمة.

ورمز يجمع أسرع.

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

وتنظر الآن، إذا أعطيت لك ملف .cs مع 1000 توجيهات using الذي كان يستخدم فقط 10 في الواقع. كلما نظرتم الى رمز التي أدخلت حديثا في التعليمات البرمجية التي يحيل الى العالم الخارجي، سيكون لديك للذهاب من خلال هذه السطور 1000 لمعرفة ما هو عليه. ومن الواضح أن هذا يبطئ الإجراء أعلاه. حتى إذا كنت يمكن أن تقلل منها إلى 10، وسوف تساعدك!

في رأيي، C # using التوجيه جدا ضعيف جدا، حيث لا يمكنك تحديد رمز عام واحد دون genericity الضياع، ولا يمكنك استخدام الاسم المستعار using التوجيه لاستخدام أساليب الإرشاد. ليست هذه هي الحال في لغات أخرى مثل جافا، بيثون وحزقيل، في تلك اللغات كنت قادرا على تحديد (تقريبا) بالضبط ما تريد من العالم الخارجي. ولكن حدث بعد ذلك، وسوف تشير إلى استخدام الاسم المستعار using كلما أمكن ذلك.

ومؤخرا حصلت سبب آخر لحذف الواردات غير المستخدمة هي مفيدة جدا ومهمة.

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

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

وأخيرا في exapmle كان لدينا لشحن B و A معا، على الرغم من أنه لم تستخدم B في أي مكان في A ولكن في القسم using. وسوف يؤثر هذا على نطاق واسع في وقت التشغيل -performance من A عندما <م> تحميل الجمعية.

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