# Как управлять зависимостями

Современное программное обеспечение имеет тенденцию зависеть от множества компонентов, которые могут не быть под вашим непосредственным контролем. Это повышает продуктивность за счет синергии и повторного использования. Однако, каждый такой компонент приносит с собой некоторые проблемы:

* Как вы будете исправлять баги в компоненте?
* Вынуждает ли компонент вас использовать определенное аппаратное обеспечение или систему?
* Что вы будете делать, если компонент полностью откажет?

Всегда лучше инкапсулировать компонент таким образом, чтобы он был отделен от основной системы, и его можно было легко заменить. Если компонент покажет свою неработоспособность, вы замените его на другой или напишите свой собственный. Инкапсуляция не улучшает переносимость, но делает переписывание кода проще, что почти также здорово.

Если у вас есть исходный код компонента, то риски снижаются вчетверо. С исходным кодом вы можете быстрее оценивать компонент, отлаживать, находить новые решения и вносить исправления. Если вы вносите исправления, то о них следует сообщить владельцу компонента, чтобы он включил их в официальный релиз. В противном случае вам придется самостоятельно поддерживать неофициальную версию компонента.

Следующее: [Как оценивать стороннее программное обеспечение](/how-to-be-a-programmer/ru/2-intermediate/judgment/03-how-to-decide-if-software-is-too-immature.md)


---

# 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://braydie.gitbook.io/how-to-be-a-programmer/ru/2-intermediate/judgment/02-how-to-manage-software-system-dependence.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.
