قاعده کلی در توسعه وب این است که هنگام اجرای وظایف جاوا اسکریپت، هرگز نباید ترد اصلی (Main Thread) مرورگر را مسدود کرد. این قانون به دلیل سادهای وجود دارد: مسدود کردن ترد اصلی باعث میشود صفحه وب پاسخگو نباشد و تجربه کاربری به شدت تخریب کند. اما آیا این یک قانون لایتغیر است؟
ویکتور آیومیپو، توسعهدهنده وب، مورد استفاده جالبی را توصیف میکند که با آن مواجه شد. او روی یک افزونه اسکرینشات کار میکرد و در این پروژه خاص، متوجه شد که قانون "عدم مسدود کردن ترد اصلی" نمیتواند همیشه صدق کند و گاهی استثنا دادن به آن ضروری است.
در این مورد خاص، آیومیپو تصمیم گرفت که استثنایی بر این قانون بگذارد و ترد اصلی را مسدود کند. نتیجه؟ این تصمیم کاملاً کار درستی بود و مشکلات عملی خاصی را حل کرد که در غیر این صورت با چالشهای بزرگتری مواجه میشدند.
به نقل از کدیراناین داستان یادآور یک اصل مهم در مهندسی نرمافزار است: قوانین تجربی (Rules of Thumb) مفید هستند، اما نباید کورکورانه دنبال شوند. در توسعه نرمافزار، هر پروژه چالشهای منحصر به فرد خود را دارد و گاهی بهترین راهکار، نقض یک قانون متداول است.
قانون "عدم مسدود کردن ترد اصلی" یکی از اصول بنیادین توسعه وب مدرن است. ترد اصلی وظیفه رندر کردن صفحه، پردازش رویدادهای کاربر و اجرای جاوا اسکریپت را بر عهده دارد. وقتی این ترد مسدود شود، مرورگر قادر به پاسخگویی به تعاملات کاربر نیست و صفحه فریز میشود. به همین دلیل، توسعهدهندگان همیشه توصیه میشوند وظایف سنگین را به Web Workers منتقل کنند یا از APIهای ناهمگام استفاده کنند.
اما مورد استفاده آیومیپو نشان میدهد که در شرایط خاص، مسدود کردن ترد اصلی میتواند راهکار درستی باشد. این موضوع به ما یادآوری میکند که درک عمیق از ابزارها و فناوریها، مهمتر از حفظ قوانین است. توسعهدهندگان باید بدانند چرا یک قانون وجود دارد و چه زمانی نقض آن توجیه میشود. این نوع تفکر نقادانه به ویژه در پروژههای نوآورانه و توسعه فناوریهای جدید که چالشهای پیشبینینشدهای ایجاد میکنند، اهمیت زیادی دارد.
در نهایت، این داستان نشان میدهد که مهارت واقعی یک توسعهدهنده در شناختن زمانهایی است که باید قوانین را شکست. انعطافپذیری و درک زمینهای، کلید موفقیت در مهندسی نرمافزار است.