در اغلب موارد، به منظور دستیابی به پرفورمنس بیشتر، افزودن فیچرهای جدید و یا دیباگ کردن بخشی از نرمافزار بایستی کدها را دستکاری (ریفکتور) کرد اما این در حالی است که بخشهایی از کد که دارای Dependency (وابستگی) زیادی به دیگر بخشها هستند تمام تلاشهای ما را نقش بر آب خواهند کرد و هرچه این میزان وابستگی گستردهتر و ناواضحتر باشد، احتمال پی بردن به آن هم به مراتب دشوارتر خواهد شد!
به خاطر داشته باشیم که کدهای کثیف، نامنظم و اسپاگتی هم اوضاع را بیش از پیش وخیم خواهند کرد به طوری که وابستگیهای زیاد در سورسکد به علاوهٔ کدهای اسپاگتی، یک تغییر کوچک که به نظر ۲ الی ۳ ساعت بیشتر زمان نمیبرد، به یک فرایند دشوار، خستهکننده و گاهیاوقات غیرممکن چند هفتهای مبدل میسازد.
برای جلوگیری از مشکلاتی این چنین، میبایست در حین طراحی معماری نرمافزار تا حد ممکن میزان وابستگیها را به حداقل رساند. گرچه به صفر رساندن میزان وابستگی عملاً غیرممکن است، اما هرچه میزان وابستگی مابین بخشهای مختلف سورسکد کمتر باشد، و یا این وابستگیها حداقل در حوزهٔ یک ماژول باشند و نه بیشتر، ریفکتورینگ کد به مراتب راحتتر خواهد شد.