شیگرایی یعنی کنترل وابستگی، نه فقط ساختن کلاس
پروژه از بیرون کاملاً شیگرا به نظر میرسید. تقریباً برای هر مفهوم، یک کلاس وجود داشت: UserService، OrderManager، PaymentHandler، ReportGenerator و چندین کلاس دیگر. کدها دیگر مثل یک اسکریپت بلند و تخت نبودند. هر چیز، جایی داشت و هر فایل، اسمی آشنا. اما وقتی تیم خواست پایگاه داده را برای آزمونها جایگزین کند، یا بخشی از منطق پرداخت را بدون فریمورک وب اجرا کند، واقعیت خودش را نشان داد: کلاسها زیاد بودند، اما وابستگیها همچنان به دیتابیس، فریمورک و جزئیات بیرونی قفل شده بودند.
در عمل، بسیاری از کلاسها فقط ظرفهایی شیکتر برای همان کدهای قبلی بودند. سازندهی کلاسها پر از اتصال مستقیم به ابزارها بود. متدهای اصلی، مدلهای پایگاه داده را میشناختند. خطاهای دامنه با کدهای وضعیت HTTP قاطی شده بود. آزمون یک رفتار ساده، نیازمند راهاندازی نیمی از سامانه بود. پروژه «کلاس» داشت، اما از توان اصلی شیگرایی برای معماری استفاده نمیکرد.

