180 قراءة٪ s

Code Smell 298 - كيفية إصلاح Microsoft Windows Time Waste

بواسطة Maximiliano Contieri5m2025/05/04
Read on Terminal Reader

طويل جدا؛ ليقرأ

انخفاض تقارير الوضع في النشاطات المعيارية يؤدي إلى تأخير هادئ ونتائج السباق.
featured image - Code Smell 298 - كيفية إصلاح Microsoft Windows Time Waste
Maximiliano Contieri HackerNoon profile picture

عندما تسيطر المنظومة المنطقية على الإشارات الأساسية


TL;DR: انخفاض تقارير الوضع في الصناعات المعيارية يؤدي إلى تأخير هادئ ونتائج السباق.

TL;DR: انخفاض تقارير الوضع في الصناعات المعيارية يؤدي إلى تأخير هادئ ونتائج السباق.

مشكلات

  • المستخدمون يتأخرون
  • تجربة سيئة
  • أوقات غير متوقعة
  • البدء غير الكامل
  • التهديدات المفقودة
  • السياسات السيئة
  • الفشل الصمتي
  • إزالة التوافق الخلفي

حلول

  1. تقييم جميع مسارات الكود
  2. استخدام آليات التقارير الافتراضية
  3. اختبار الحالات الجانبية بشكل صارم
  4. التحقق من السياسات في وقت مبكر
  5. إجراء اختبارات الأداء
  6. إرسال التقارير خارج الشروط

السياق

عند إضافة منطق معين (على سبيل المثال، سياسات المجموعة) إلى رمز البدء، فإن التخفيف من الخطوات الأساسية مثل تقارير الاستعداد يؤدي إلى تأخير في جميع أنحاء النظام.


الحالات الحدود هي ظروف استثنائية تحدث خارج المعايير التشغيلية المعتادة.


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


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


القائمة المسؤولة عن تثبيت ورق الخلفية لا تزال "مستعدة" فقط عندما تم تحميل صورة ورقة الخلفية بنجاح.


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


ونتيجة لذلك ، انتظرت النظام لمدة 30 ثانية كاملة قبل البدء في سلسلة تسجيل الدخول.


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


ما كان يجب أن يكون عملية تسجيل الدخول 5 ثانية أصبح تأخير 30 ثانية مفرطة بالنسبة للمستخدمين الذين اختاروا خيار تكوين بسيط.

تكرار هذا التوقيت 30 ثانية سلبية من قبل كل مستخدم الذي كان لديه النسخة.


تصميم البرمجيات الجيدة يتطلب منك النظر في جميع الطرق المحتملة من خلال رمزك، وليس فقط تلك المعتادة.


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

رمز نموذج

خطأ 🙂

public static class WallpaperInitializer
{
    private static bool wallpaperWasDefined = false;

    public static void InitializeWallpaper()
    {
        if (wallpaperWasDefined)
        // Assume this was defined previously
        // and PLEASE DON'T use NULLs in case you hadn't    
        {
            LoadWallpaperBitmap();
            Report(WallpaperReady); // Missed if wallpaper is undefined
        }
       // No default report, causing delays
    }

    private static void LoadWallpaperBitmap()
    {
        
    }

    private static void Report(string status)
    {
        // The Asynchronous loading keeps on
    }
}

حقًا 🙂

public static class WallpaperInitializer
{
    private static bool wallpaperWasDefined = false;

    public static void InitializeWallpaper()
    {
        if (wallpaperWasDefined)
        {
            LoadWallpaperBitmap();
        }
        Report(WallpaperReady); 
        // Always report, regardless of condition
    }

    private static void LoadWallpaperBitmap()
    {
    
    }
}

اكتشاف

  • [x] الذكور الذكور

استخدم أدوات تحليلية استثنائية لتعليق الشروط التي تحمي الردود الإخبارية المهمة.


يجب على مراجعة الكود التحقق من أن جميع مسارات البدء تشير إلى الانتهاء.

اليوم ️

  • الأداء

مستوى

  • [x] المتوسط

لماذا هو مهم ️

يعتمد سلوك النظام في العالم الحقيقي (على سبيل المثال، سرعة التسجيل) على نموذج دقيق لظروف الاستعداد.


يجب أن تتبنى البرمجيات ترتيب واحد إلى واحد بين الحالات في العالم الحقيقي و الحالات في البرنامج.


عندما يختار المستخدمون خلفية باللون الصلب في Windows ، فإن هذا الخيار يمثل حالة عالمية حقيقية صحيحة.


(الإختيار الشخصي أيضًا بعد ذلك)


يجب أن يكون برنامج هذا الخيار مع نموذجًا صحيحًا مع حالة البرنامج المناسب التي تتصرف بشكل صحيح.


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


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


يُدخل كل حفرة في نموذج الائتمان في النظام، مما يجعلها أكثر وأكثر غير متوقعة مع مرور الوقت.


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

أجيال

يمكن للمنشآت الذكية أن تخلق هذه الرائحة عن طريق إزالة الكود القديم في المعايير دون تحديد جميع الطرق.

تقييم

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

احرص على ذلك!

تذكر: المساعدات الذكية تجعل الكثير من الأخطاء

الملاحظة التالية: العثور على التقارير الأخرى المفقودة

الملاحظة التالية: العثور على التقارير الأخرى المفقودة

Without Proper Instructions

With Specific Instructions

ChatGPT

ChatGPT

Claude

Claude

Perplexity

Perplexity

Copilot

Copilot

Gemini

Gemini

DeepSeek

DeepSeek

Meta AI

Meta AI

Grok

Grok

Qwen

Qwen

كوتشي

كوتشي

كوليد

كوليد

مخاوف

مخاوف

طيار

طيار

اثنين

اثنين

DeepSeek

DeepSeek

الهدف من

الهدف من

غروس

غروس

كوين

كوين

النتيجة

إشارة الانتهاء دائمًا بدون شروط في رمز البدء.


يجب أن تغير المنطق المعيّن السلوك، وليس التقطه خطوات التقارير المهمّة.

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxx

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xviii

المزيد من المعلومات

Disclaimer

الرائحة الكريهة هي مننظرية.


التفكير يؤدي إلى الفشل، و الفشل يؤدي إلى الفهم.

التفكير يؤدي إلى الفشل، و الفشل يؤدي إلى الفهم.

بيرت روتان


هذه المقالة جزء من سلسلة CodeSmell.


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks