الفصول الثابتة ... هل هو موافق للقيام بذلك؟

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

  •  06-09-2019
  •  | 
  •  

سؤال

قرأت وقت استخدام الفصول الثابتة في C # ولكن الإجابة العلوية لم أجب بالضرورة على سؤالي. لدي تطبيق أن واجهات مع بعض الأجهزة المماثلة، عبر خادم HTTP. يجب تسجيل كل جهاز في وبيانات الاعتماد عادة نفسها. أنا أستخدم Properties.settings.default.etc لمعالجة إعدادات التطبيق الواسعة؛ ومع ذلك، من أجل السهولة، أتبع اسم مستخدم / كلمة مرور آخر المستخدمة عند تسجيل الدخول بشكل فردي إلى جهاز. يتم استخدام الإعدادات الافتراضية المسوية من خلال نافذة خيارات أولا وتظل نفس الشيء ما لم يتغير عبر نافذة الخيارات، على الرغم من تغيير الإعدادات المؤقتة وتستخدم في الإعدادات الافتراضية.

على أي حال، هذا هو السيناريو ... فيما يتعلق بالسؤال، أفعل هذا:

private static class TemporarySettings
{
    public static string Username = Properties.Settings.Default["Username"].ToString();
    public static string Password = Properties.Settings.Default["Password"].ToString();
}

هل هذا غبي

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

المحلول

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

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

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

نصائح أخرى

حتى أفضل، بمناسبة لهم readonly أو استخدام الخصائص التي تحتوي فقط على getters.

أنت تقوم بإعداد اسم المستخدم وكلمة المرور لنفس القيمة، ولكن بخلاف ذلك، لا.

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