180 ការអាន

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: ការឆ្លងកាត់ប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែលជាប្រហែល។

ការបញ្ហានេះ

  • អ្នកប្រើប្រាស់លក្ខខណ្ឌ
  • មានបទពិសោធន៍ទាប
  • ពេលវេលាមិនគួរឱ្យចាប់អារម្មណ៍
  • ការចាប់ផ្តើមមិនពេញលេញ
  • ការផ្លាស់ប្តូរគោលបំណង
  • ការគ្រប់គ្រងគោលបំណង
  • ការជឿទុកចិត្ត
  • ការផ្លាស់ប្តូរការផ្លាស់ប្តូរ Backward Compatibility

លក្ខខណ្ឌ

  1. គោលបំណងគ្រប់គ្រងកូដ
  2. ការប្រើប្រាស់ឧបករណ៍ទិន្នន័យ default
  3. ការធ្វើតេស្ត EDGE CASES ដោយត្រឹមត្រូវ
  4. គោលនយោបាយ refactor គោលនយោបាយ refactor refactor
  5. ការធ្វើតេស្តប្រសិទ្ធភាព
  6. ការដឹកជញ្ជូនប្រព័ន្ធផ្សព្វផ្សាយខាងក្រៅ

លក្ខខណ្ឌ

នៅពេលដែលអ្នកបន្ថែមលក្ខណៈសម្បត្តិសម្បត្តិ (ដូចជាគោលបំណងក្រុម) ទៅកូដការចាប់ផ្តើម, ការបាត់បន្ថយដំណោះស្រាយសំខាន់ដូចជាពាក្យសំរាប់ការរក្សាទុកធ្វើឱ្យប្រព័ន្ធទូទៅមានការបាត់បន្ថយ។


ទំហំ Edge គឺជាទំហំធម្មតាដែលកើតឡើងនៅខាងក្រៅពីទំហំប្រតិបត្តិការធម្មតា។


ប្រសិនបើអ្នកមិនដោះស្រាយប្រសិនបើបញ្ហានេះបានត្រឹមត្រូវ, កូដរបស់អ្នកអាចធ្វើឱ្យប្រសិនបើអ្នកមិនអាចធ្វើឱ្យប្រាកដ។


នេះមាតិកា Microsoftគំនិតមួយដែលមានការបាត់បង់ការដោះស្រាយបញ្ហានេះប្រព័ន្ធ ប្រព័ន្ធ ប្រតិបត្តិការ Windows 7 បានមានពេលដំណើរការលឿនជាងមុននៅពេលដែលអ្នកប្រើបានជ្រើសរើសរូបថតរូបថតរូបថតដែលមានតម្រូវការ.


លេខកូដដែលគ្រប់គ្រងសម្រាប់ការផ្ទុករូបថតកុំព្យូទ័រសាកល្បងបាន "រៀបចំ" នៅពេលដែលវាមានការផ្ទុករូបថតកុំព្យូទ័រសាកល្បង។


ប៉ុន្តែនៅពេលដែលអ្នកប្រើបានជ្រើសរើសរូបថតរាងកាយ (ប្រហែលជាប្រហែល margine) នេះកូដនេះមិនបានកាត់បន្ថយការបញ្ជាក់ "រៀបចំ" ។


ដូច្នេះប្រព័ន្ធនេះបានរក្សាទុកពេលវេលា 30 វិនាទីមុនពេលដំណើរការជាមួយដំណើរការដំណើរការ login ។


ទិន្នន័យនេះបង្ហាញពីរបៀបដែលការបាត់បង់ទំហំទំហំទំហំទំហំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលាយ។


អ្វីដែលគួរតែជាដំណើរការចុះឈ្មោះ 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, ការជ្រើសរើសនេះបង្ហាញឱ្យមានប្រសិទ្ធិភាពក្នុងពិភពលោកពិតប្រាកដ។


(តម្រូវការផ្ទាល់ខ្លួនរបស់ខ្ញុំនៅពេលនេះផងដែរ)


កម្មវិធីនេះគួរតែរៀបចំនៃការជ្រើសរើសនេះយ៉ាងត្រឹមត្រូវជាមួយនឹងស្ថានភាពកម្មវិធីដែលអនុវត្តយ៉ាងត្រឹមត្រូវ។


នៅពេលដែលអ្នកបាត់បន្ថយការផ្លាស់ប្តូរនេះដោយមិនដោះស្រាយបញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្


ការផ្លាស់ប្តូរដែលមិនមានបានបង្កើតភាពខុសគ្នានៃការគេស្គាល់: "ខ្ញុំបានធ្វើការជ្រើសរើសងាយស្រួល, ហេតុអ្វីដែលកុំព្យូទ័ររបស់ខ្ញុំធ្វើឱ្យប្រសើរណាស់?" ការផ្លាស់ប្តូរនេះកាត់បន្ថយអាជីវកម្មរបស់អ្នកនិងការពេញចិត្តរបស់អ្នក។


រាល់ bijection បានបាត់បន្ថយបានធ្វើឱ្យប្រព័ន្ធនេះមានការកាត់បន្ថយនៅក្នុងគំរូសុវត្ថិភាពរបស់ខ្លួនដែលធ្វើឱ្យវាមានភាពមិនគួរឱ្យចាប់អារម្មណ៍ចំពោះពេលវេលា។


ការបាត់បន្ថយការតភ្ជាប់នេះធ្វើឱ្យការមិនត្រឹមត្រូវរវាងការចាប់អារម្មណ៍របស់អ្នកនិងការដំណើរការកម្មវិធីដែលធ្វើឱ្យមានការបាត់បន្ថយនិងការបាត់បន្ថយមិនគិតថ្លៃ។សៀវភៅលក្ខខណ្ឌនៃពិភពលោកពិតណាស់

ម៉ាស៊ីនបង្កើត AI អាចបង្កើតគួរឱ្យចាប់អារម្មណ៍នេះដោយការកាត់បន្ថយកូដអាសអាភាសនៅក្នុងការកាត់បន្ថយដោយគ្មានការត្រួតពិនិត្យទាំងអស់។

ការរកឃើញ

សំរាប់ AI ដើម្បី "សុវត្ថិភាពការធ្វើតេស្តស្ថានភាពធ្វើតេស្តនៅក្នុងបណ្តុះបណ្តាលទាំងអស់" ហើយវានឹងធ្វើតេស្តឬកាត់បន្ថយអារម្មណ៍នេះដោយផ្លាស់ប្តូរ Report() ពីខាងក្រៅនៃបណ្តុះបណ្តាល។

ពិនិត្យឡើងវិញ!

សូមអរគុណ: អ្នកជំនួយ AI បានធ្វើទំហំជាច្រើន

សៀវភៅអាសអាភាស: Find missing other reports

សៀវភៅអាសអាភាស: Find missing other reports

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

ហ្វេសប៊ី

ហ្វេសប៊ី

លោក Claude

លោក Claude

ស្លាក

ស្លាក

សាកលវិទ្យាល័យ

សាកលវិទ្យាល័យ

យោបល់

យោបល់

ការស្វែងរក

ការស្វែងរក

គោលបំណង

គោលបំណង

ម្សៅ

ម្សៅ

សត្វ

សត្វ

លក្ខណៈពិសេស

សញ្ញាបនប័ត្របញ្ចប់ដោយមិនគួរតែបញ្ជាក់នៅក្នុងកូដ initialization ។


លក្ខខណ្ឌគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណងគោលបំណង

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

លក្ខណៈពិសេស

លក្ខខណ្ឌ

គំនូរកូដគឺរបស់ខ្ញុំអារម្មណ៍.


ការធ្វើតេស្តធ្វើឱ្យមានការជោគជ័យ និងការជោគជ័យធ្វើឱ្យមានការយល់ដឹង។

ការធ្វើតេស្តធ្វើឱ្យមានការជោគជ័យ និងការជោគជ័យធ្វើឱ្យមានការយល់ដឹង។

លោក Burt Rutan


អត្ថបទនេះគឺជាផ្នែកមួយនៃ Series CodeSmell ។


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

ព្យួរស្លាក

អត្ថបទនេះត្រូវបានបង្ហាញនៅក្នុង...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks