HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В некоторых языках, таких как Python или JavaScript, переменные или константы, определенные на уровне модуля, могут быть импортированы в других частях программы. С одной стороны, это открывает больше возможностей по сравнению с языками, где любые данные должны находиться внутри функций, классов и так далее. С другой стороны, становится гораздо легче писать плохо поддерживаемый код.</p>
1 <p>В некоторых языках, таких как Python или JavaScript, переменные или константы, определенные на уровне модуля, могут быть импортированы в других частях программы. С одной стороны, это открывает больше возможностей по сравнению с языками, где любые данные должны находиться внутри функций, классов и так далее. С другой стороны, становится гораздо легче писать плохо поддерживаемый код.</p>
2 <p>Представим, что мы пишем веб-сервис, который умеет конвертировать валюты. В этом конвертере присутствует описание того, какая валюта в какую может конвертироваться, и по какому курсу:</p>
2 <p>Представим, что мы пишем веб-сервис, который умеет конвертировать валюты. В этом конвертере присутствует описание того, какая валюта в какую может конвертироваться, и по какому курсу:</p>
3 <p>Остальные части программы используют эту информацию для своих вычислений и проверок:</p>
3 <p>Остальные части программы используют эту информацию для своих вычислений и проверок:</p>
4 <p>Код получился простой, но ненадежный. Если пользователь выполнит запрос на рейт валют, которых нет в системе, возникнет ошибка доступа к объекту:</p>
4 <p>Код получился простой, но ненадежный. Если пользователь выполнит запрос на рейт валют, которых нет в системе, возникнет ошибка доступа к объекту:</p>
5 <p>Даже если первая валюта есть, то при отсутствии второй в константе rate окажется undefined, что может быть неверным (зависит от приложения).</p>
5 <p>Даже если первая валюта есть, то при отсутствии второй в константе rate окажется undefined, что может быть неверным (зависит от приложения).</p>
6 <p>Перепишем код и избавимся от ошибки:</p>
6 <p>Перепишем код и избавимся от ошибки:</p>
7 <p>Ошибка больше не возникнет, но решение все еще плохое. Работа с rates наверняка не ограничится одним обработчиком. С ростом приложения рейты начнут использоваться повсеместно, а это значит, что и<a>обработку ошибок</a>придется делать в каждом месте. Кроме того, любое изменение структуры данных также потребует переписывания всех мест, где они используются.</p>
7 <p>Ошибка больше не возникнет, но решение все еще плохое. Работа с rates наверняка не ограничится одним обработчиком. С ростом приложения рейты начнут использоваться повсеместно, а это значит, что и<a>обработку ошибок</a>придется делать в каждом месте. Кроме того, любое изменение структуры данных также потребует переписывания всех мест, где они используются.</p>
8 <blockquote><p>Подписывайтесь на<a>канал Кирилла Мокевнина в Telegram</a>- чтобы узнать больше о программировании и профессиональном пути разработчика</p>
8 <blockquote><p>Подписывайтесь на<a>канал Кирилла Мокевнина в Telegram</a>- чтобы узнать больше о программировании и профессиональном пути разработчика</p>
9 </blockquote><p>Указанные проблемы типичны для всех ситуаций, когда работа с данными идет напрямую без создания хотя бы минимальной абстракции (функций) для доступов к данным. Решается все очень просто, нужно лишь добавить функцию в модуль<em>currency.js</em>.</p>
9 </blockquote><p>Указанные проблемы типичны для всех ситуаций, когда работа с данными идет напрямую без создания хотя бы минимальной абстракции (функций) для доступов к данным. Решается все очень просто, нужно лишь добавить функцию в модуль<em>currency.js</em>.</p>
10  
10