مهندسی نرم‌افزار
بازسازی کد: بار دوم یا بار سوم

آیا تا به حال موقع نوشتن کد با این شرایط رو به رو شده‌اید که متوجه شوید مشابه این کار را قبلا انجام داده‌اید؟ در چنین شرایطی چه می‌کنید؟ آیا برمی‌گردید و کد قبلی را نیز اصلاح می‌کنید؟ یا بدون به توجه به کد قبلی، کد جدید را می‌نویسید؟ (احتمالا نتیجه چنین کاری، کد تکراری […]

مهندسی نرم‌افزار
بازسازی کد: ارزش کد خودآزما (Self-testing code)

بازسازی کد ابزار ارزشمندی است، اما نمی‌تواند به تنهایی مفید باشد. برای انجام درست بازسازی کد، به مجموعه‌ای یکپارچه‌ و قابل اتکا از تست‌ها نیاز دارم تا بتوانم اشتباهات اجتناب‌ناپذیر خود را پیدا کنم. حتی با وجود ابزارهای بازسازی‌ خودکار کد، ناچارم بسیاری از بازسازی‌های کد را همچنان از طریق مجموعه‌‌ای از تست‌‌ها (test suite) […]

مهندسی نرم‌افزار
توصیه‌های ChatGPT به توسعه‌دهندگان نرم‌افزار

مکالمه‌ی کوتاهم با ChatGPT را در اینجا آورده‌‌ام با این هدف که برای خوانندگان عزیزم مفید باشد. می‌تونید لطفا خودتون رو معرفی کنید؟ من ChatGPT هستم. من یک دست‌یار مجازی‌ام که از روی مدل پردازش زبان طبیعی شرکت OpenAI ساخته شده‌ام. من طراحی شده‌ام تا طیف گسترده‌ای از پرسش‌ها و درخواست‌ها به زبان طبیعی را […]

مهندسی نرم‌افزار
بازسازی کد: نام‌های اسرارآمیز

اگر مشغول خواندن یک رمان پلیسی باشید، اتفاق خوشایندی است که مجبور شوید تمام فکر و حواس‌تان را روی بخشی از کتاب متمرکز کنید تا بفهمید چه اتفاقی دارد می‌افتد. اما موقعی که مشغول خواندن کدی هستید، چنین اتفاقی اصلا خوشایند نیست. ممکن است در مورد خودتان تصور کنید که شما هم یکی از اعضای […]

مهندسی نرم‌افزار
حدس نزنید، اندازه بگیرید

سیستمی که مشغول نوشتن آن برای کرایسلر بودیم خیلی کند بود. هرچند ما هنوز در مرحله‌ی توسعه بودیم، اما کندی سیستم باعث کندی کار می‌شد چون اجرای آزمون‌ها خیلی طولانی می‌شد. کنت بک، مارتین فاولر و من تصمیم گرفتیم که این مشکل را حل کنیم. قبل از آنکه بتوانیم برای بررسی مساله دور هم جمع […]

مهندسی نرم‌افزار
بازسازی کد، کد خودآزما، یکپارچه‌سازی پیوسته

اگر بخش قبلی در مورد مشکلات بازسازی‌کد (refactoring) را خوانده باشید، احتمالاً یکی از درس‌هایی که یاد گرفته‌اید این است که اثربخشی بازسازی کد با سایر تکنیک‌ها و روش‌هایی که یک تیم استفاده می‌کند، ارتباط تنگاتنگی دارد. اکس‌پی (XP) یکی از اولین متدهای چابک بود و برای سالها رهبر تکنیک‌های جدید و نوظهور چابک بود. […]

مهندسی نرم‌افزار
دام توجیه بازسازی کد (Refactoring)

اما من فکر می‌کنم خطرناک‌ترین روشی که افراد به دام می‌افتند زمانی است که سعی می‌کنند بازسازی کد (refactoring) را بر اساس موضوعاتی مانند «کد تمیز» (Clean Code)، «تجربه‌ی خوب و شناخته‌شده‌ی مهندسی» (Good Engineering Practice) یا دلایل اخلاقی مشابه توجیه کنند. هدف از بازسازی کد این نیست که نشان دهیم یک مخزن کد (code […]