اگر بخش قبلی در مورد مشکلات بازسازیکد (refactoring) را خوانده باشید، احتمالاً یکی از درسهایی که یاد گرفتهاید این است که اثربخشی بازسازی کد با سایر تکنیکها و روشهایی که یک تیم استفاده میکند، ارتباط تنگاتنگی دارد.
اکسپی (XP) یکی از اولین متدهای چابک بود و برای سالها رهبر تکنیکهای جدید و نوظهور چابک بود. امروزه پروژههای زیادی از روشهای چابک که جریان فکری اصلی آنها همان تفکر چابکی (agile thinking) است استفاده میکنند، هر چند در واقعیت، اکثر پروژههای «چابک» تنها بهرهای که از چابکی میبرند فقط نام آن است.
برای اینکه تیمی واقعاً به روشی چابک رفتار کند باید اعضای آن در بازسازی کد، توانمند و مشتاق باشند و برای تحقق چنین شرایطی ضروری است بسیاری از جنبههای فرایند آنها، همسو و همجهت با تبدیل بازسازی کد به بخشی منظم و عادی از کار توسعه باشد.
۱) اولین ستون و پایبست بازسازی کد، کد خودآزما (self-testing code) است. منظورم از کد خودآزما این است که مجموعهای از آزمونهای خودکار وجود دارد که با اجرای آنها، مطمئن میشوم در صورت ایجاد خطا توسط کد من، برخی از آزمونها ناموفق خواهند شد و آزمون نیز با شکست همراه خواهد شد.
۲) برای بازسازی کد در یک تیم، این نکته مهم است که هر یک از اعضا بتوانند بدون خراب کردن کار دیگران، کدها را تغییر بدهند و اصلاح کنند. به همین دلیل است که من یکپارچهسازی پیوسته (Continuous Integration) را توصیه میکنم.
با بهکارگیری این سه تکنیک (بازسازی کد، کد خودآزما، یکپارچهسازی پیوسته) تازه امکان استفاده از رویکرد طراحی Yagni را فراهم میکنیم. لازم به ذکر است که بازسازی کد و Yagni اثر یکدیگر را تقویت میکنند.
تازه بعد از جااندازی این تکنیکها و روشهای زیربنایی، زیرساخت لازم برای بهرهگیری از سایر اجزای تفکر چابکی مانند تحویل پیوسته (Continuous Delivery) فراهم خواهد شد.
پانوشت: YAGNI مخفف “You Aren’t Gonna Need It” است و تکنیکی است برگرفته از XP که بیان میکند برنامهنویس نباید کارکردی را به سیستم اضافه کند مگر آن که تشخیص داده شود ضروری است.
مرجع: Refactoring, 2nd Edition, by Martin Fowler.
گزیده (مورد علاقهام):
تفکر بیسبالیها قرون وسطایییه. همهشون به کل پرسشهای نادرست میپرسند. اگر چیزی بگم طردم میکنند. انگار من جذامیام.
خوب، به خرید بازیکنها فکر کن. هدفتون از خرید نباید خرید بازیکن باشه. بلکه هدفتون باید خرید برد باشه. و برای خرید برد، باید امتیاز بخرید.
پیتر برند، از فیلم مانیبال
“Baseball thinking is midevil. They are asking all the wrong questions. And if I say anything I get ostrisized. I’m a lepper.”
“Ok, think in terms of buying players. Your goal shouldn’t be to buy players it should be to buy wins. And in order to buy wins you have to buy runs.”
— Peter Brand, Moneyball