# وابستگی‌های زیاد دشمن ریفکتورینگ هستند!

در اغلب موارد، به‌ منظور دستیابی به پرفورمنس بیشتر، افزودن فیچرهای جدید و یا دیباگ کردن بخشی از نرم‌افزار بایستی کدها را دستکاری (ریفکتور) کرد اما این در حالی است که بخش‌هایی از کد که دارای Dependency (وابستگی‌) زیادی به دیگر بخش‌ها هستند تمام تلاش‌های ما را نقش بر آب خواهند کرد و هرچه این میزان وابستگی گسترده‌تر و ناواضح‌تر باشد، احتمال پی بردن به آن هم به‌ مراتب دشوارتر خواهد شد!

به خاطر داشته باشیم که کدهای کثیف،‌ نامنظم و اسپاگتی هم اوضاع را بیش از پیش وخیم خواهند کرد به‌ طوری که وابستگی‌های زیاد در سورس‌کد به علاوهٔ کدهای اسپاگتی، یک تغییر کوچک که به نظر ۲ الی ۳ ساعت بیشتر زمان نمی‌برد، به یک فرایند دشوار، خسته‌کننده و گاهی‌اوقات غیرممکن چند هفته‌ای مبدل می‌سازد.

برای جلوگیری از مشکلاتی این چنین، می‌بایست در حین طراحی معماری نرم‌افزار تا حد ممکن میزان وابستگی‌ها را به حداقل رساند. گرچه به صفر رساندن میزان وابستگی عملاً غیرممکن است، اما هرچه میزان وابستگی مابین بخش‌های مختلف سورس‌کد کمتر باشد، و یا این وابستگی‌ها حداقل در حوزهٔ یک ماژول باشند و نه بیشتر، ریفکتورینگ کد به مراتب راحت‌تر خواهد شد.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/fa/thing_74.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
