LifeEXE | Unreal Engine | CG
2.1K subscribers
566 photos
812 videos
716 links
Download Telegram
Media is too big
VIEW IN TELEGRAM
📕 Всем привет, всем привет! 📕

Непостоянная воскресная рубрика — законы software 🔴

Закон Хайрама (Hyrum's Law) — эмпирическое наблюдение в программной инженерии, которое описывает сложность поддержки популярных API и интерфейсов 🧠

Назван в честь Хайрама Райта (Hyrum Wright), инженера Google ➡️

При достаточном количестве пользователей API неважно, что вы обещали в контракте: все наблюдаемые поведения вашей системы будут кем-то использоваться и от них будут зависеть


⁉️ В чём суть ⁉️

Когда разработчик создаёт API, он описывает контракт — документацию: метод принимает А, возвращает Б.Но помимо контракта у системы есть скрытые детали реализации: скорость ответа, порядок элементов, текст ошибки.

Чем больше людей пользуются системой — тем выше вероятность, что кто-то начнёт полагаться на эти недокументированные особенности. И если вы их измените (даже не нарушив контракт) — код пользователей сломается.

💡 Примеры из жизни 💡

🔤Порядок в Hash Maps — контракт не гарантирует порядок элементов, но старые реализации случайно возвращали их в порядке добавления. Разработчики на это полагались — при смене алгоритма хеширования всё ломалось.

🔤Парсинг ошибок — API возвращает 404 с текстом «User not fond». Кто-то парсит именно эту строку. Исправили опечатку — скрипт сломался.

🔤Производительность как «фича» — функция работала медленно из-за бага, а пользователь использовал эту задержку как таймер. Ускорили функцию — получили ошибки многопоточности.

🗜Почему это важно? 🗜

Закон объясняет, почему в больших системах (Windows, Linux, ядро банковских систем) так трудно что-то менять. Любое, даже самое полезное изменение может стать breaking change для кого-то из тысяч пользователей.

‼️ Главный вывод: интерфейс — это не то, что написано в документации, а то, как система ведёт себя на самом деле

#software_laws #hyrum #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥13💯85👍2🫡1🦄1