>>6377136Так слой из абстракций это как раз то что делает работу на высоком уровне сложнее.
Даже на примере банального TCP-сервера. Как думаешь, что проще сделать: просто в цикле получить байтики и просто обработать(в случае необходимости послать ответ); либо начинать городить абстракции в виде обработчиков, валидаторов, евентбассов, пакетов, сообщений. Конечно, когда слой из абстракций за тебя уже написали, развивать это проще, но ведь я говорю не о ситуации: ну мы взяли готовый фреймворк и просто добавили пару классов, которые решают нашу бизнес задачу, а о сложных системах, в которых абстракции пишутся с нуля, так чтобы потом переиспользовать их и расширять существующий проект. В данном случае как раз более высокий уровень будет сложным, потому что ТРЕБОВАНИЯ. Ты не можешь просто ебануть глобальную переменную, потому что хуй знает что там через 2 месяца будет и не сломается ли все к хуям из-за того что переменная эта изменится, ты не можешь просто написать метод который что-то делает, ты выносишь это в какую-нибудь стратегию, твои классы высокого уровня начинают быть все более абстрактными, чтобы в случае если логика какого-то куска менялась, у тебя не возникало необходимости переписывать уже написаное, это заставляет писать не как хочется, а так как надо. Думаешь если бы на высоком уровне все было просто и заебись, кто-то бы ебался со всеми этими контейнерами, ребитами, докерами и прочей хренью? Да нет, херачили бы так чтобы решить задачу здесь и сейчас. Но когда проект хотя бы 50к строк кода занимает, так уже писать просто невозможно, особенно если разработка проекта ведется в команде.
Ай, ладно, что это я гружу всякой фигней. Ты же серьезно думаешь, что написать абстракцию клавиатуры, которая позволит работать с любой клавиатурой чтобы когда ты ее подключил тебе не пришлось не понимать, хрена оно не работает - проще, чем сделать конкретную реализацию для работы с конкретной клавиатурой дядюшки Ляо Хуя.