Оптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео-Эльдорадо. Тем любопытней изучить опыт коллег за рубежом. Предлагаем вашему вниманию очередной пост на тему: «А как там у них». Читать полностью »
Рубрика «Совершенный код» - 4
Как мы избавились от 80% своего кода, повысив скорость разработки и уменьшив количество ошибок
2022-01-05 в 12:33, admin, рубрики: KISS, solid, YAGNI, абстракции, Блог компании М.Видео-Эльдорадо, мвидео, преждевременная оптимизация, Серверная оптимизация, Совершенный код, управление разработкой, шаблоны проектирования, ЭльдорадоКак напечатать float
2021-12-13 в 8:42, admin, рубрики: assert, float, grisu, printf, Блог компании Конференции Олега Бунина (Онтико), вещественные числа, Совершенный код, тестирование, тестирование веб-приложений, Тестирование веб-сервисов, Тестирование мобильных приложений, тестыКазалось бы, совершенно непонятно, зачем живым людям в 2021 году решать задачу под названием «печатаем обычное вещественное число». Вроде бы это должно быть уже решено — причём примерно в тот момент, когда эти вещественные числа изобрели. Но оказывается, что нет.
Привет, меня зовут Андрей, я занимаюсь инфраструктурой поиска в Авито и сегодня расскажу, зачем это вообще нужно — печатать вещественные числа. Какие есть методы (один) решения этой боевой задачи и как это получилось у нас в проекте, в рамках наших очень странных требований. А также, зачем таки подобное, хм, умеренно эзотерическое знание, можетЧитать полностью »
Code Review. 80 lvl
2021-12-04 в 7:43, admin, рубрики: code review, java, код, практика программирования, Программирование, Совершенный код, управление разработкой, чистый код, эффективностьЛюбой программный продукт, будь то веб-сайт или мобильное приложение, основан на коде. Чем согласованнее и целостнее эта база, тем удобнее с ней будет работать, например, при необходимости доработки проекта, передачи на сопровождение другой команде.
Основными критериями качественного кода являются следующие: простота восприятия, гибкость для модификаций, возможность обновления, понятность, тестируемостьЧитать полностью »
Ультра быстрый Cron с шагом в миллисекунду, или когда тестовые задания такими прикидываются
2021-11-17 в 5:46, admin, рубрики: .net, C#, Карьера в IT-индустрии, поиск работы, рекрутинг, Совершенный код, тестовые заданияДавным-давно наш коллега @novarразместил на Хабре статью с описанием вот такого незатейливого ТЗ, полученного им от потенциального работодателя:
Реализовать класс для задания и расчета времени по расписанию. Расписание задано в стиле crontab (точный формат см. во вложении), требуется находить ближайшие в будущем или прошлом моменты, попадающие в это расписание. Обращаю Ваше внимание, что класс должен быть эффективным и не использовать много памяти и ресурсов даже тогда, когда в расписании задано много значений. Например очень много значений Читать полностью »
Преодоление сложности в самом сердце DDD
2021-11-07 в 7:00, admin, рубрики: DDD, Анализ и проектирование систем, Программирование, Проектирование и рефакторинг, Совершенный код, управление разработкойЭта статья является переводом материала «Tackling Complexity in the Heart of DDD».
Давайте проведем небольшой эксперимент: попробуем объяснить суть предметно-ориентированного проектирования (DDD) тому, кто понятия об этом не имеет. Это, особенно если делать кратко, непросто. Ограниченные контексты, сущности, события домена, объекты значений, домены, агрегаты, репозитории… с чего начать?
6 правил, которые пригодились бы мне, когда я осваивал программирование
2021-11-06 в 10:45, admin, рубрики: Блог компании QIWI, карьера, Карьера в IT-индустрии, обучение, Программирование, Совершенный кодВ кодинге главное — не кодинг
Как вы думаете, что такое программирование?
Написание кода?
Написание хорошего кода?
Нет.
Это только часть истины.
Программирование — это не про кодинг. Программирование — это о решении задач при помощи кодинга.
Конечного пользователя не волнуют используемые вами технологии, языки, фреймворки и методологии. Их беспокоит только одно: решает ли ваш продукт их задачу.
Именно поэтому никого не волнуют внутренние технологии, используемые в поиске Google. Пока люди могут находить с его помощью нужную информацию, они будут им пользоваться.
Это самое важное, что я бы хотел знать, когда учился программированию.
Читать полностью »
Асинхронность в С++20. Доклад в Яндексе
2021-09-21 в 9:54, admin, рубрики: async/await, c++, асинхронное программирование, Блог компании Яндекс, Компиляторы, планировщики, примитивы, Программирование, Совершенный код— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать полностью »
Многопоточность и Kotlin в Яндекс.Картах: как не допустить падения новых фич на iOS
2021-09-06 в 9:02, admin, рубрики: kotlin, kotlin multiplatform, Kotlin Native, Блог компании Яндекс, многопоточность, разработка мобильных приложений, разработка под iOS, Совершенный кодПривет! Меня зовут Женя Васильев, я делаю Яндекс.Карты под Android. А с появлением у нас Kotlin Multiplatform — так уж получилось, ещё и под iOS.
Kotlin Multiplatform позволяет писать код, который будет одинаково работать на iOS и Android. По крайней мере, должен одинаково работать. И в случае с простыми фичами правда работает. Но если вы, как и я, впервые реализовываете в мультиплатформе сложную фичу с многопоточностью, на iOS вас будут ждать креши в рантайме и утечки.
В статье я расскажу и покажу на примерах, с какими проблемами я столкнулся при написании многопоточного кода на Kotlin Multiplatform, как эти проблемы решать, как лучше организовывать потоки данных в многопоточной среде и что ещё нужно делать, чтобы написанное на Kotlin не падало на iOS. Увы, писать код «как обычно» не получится.
Читать полностью »
Изоляция модели предметной области
2021-08-15 в 6:30, admin, рубрики: DDD, Анализ и проектирование систем, иммутабельность, ооп, Программирование, проектирование, Проектирование и рефакторинг, рефакторинг, Совершенный кодЭта статья является переводом материала «Domain model isolation».
Термин «изоляция модели предметной области» уже давно используется, но его значение может быть не таким очевидным, как многие думают. В этом посте автор оригинала попытается описать, что значит правильно изолировать модель предметной области и почему это важно.
Изоляция модели предметной области
Понятие изоляции модели предметной области очень похоже на то, что предлагает функциональная архитектураЧитать полностью »
Почему не все тестовые задания одинаково полезны: разбор одного фееричного провала
2021-08-10 в 7:11, admin, рубрики: .net, C#, typelevel, Карьера в IT-индустрии, никто не читает теги, Программирование, Совершенный код, тестовое задание
Всем привет, это PsyHaSTe и сегодня я хотел бы рассказать о том, куда меня занесла нелегкая в процессе оптимизации и рефакторинга кода решения тестового задания из статьи товарища novar (кто пропустил — рекомендую ознакомиться). Какие проблемы были у этого решения? Почему все-таки человеку отказали в работе? Что можно с этим сделать? Ответы на эти и многие другие вопросы оказались слишком длинными для комментария и вылились в статью с подробным разбором, примерами и альтернативной реализацией задания.
Если вам интересно кто в здравом уме мог для выполнения поставленной задачи написать код сочетающий монады с goto, а также одновременно сократил объем кода и увеличил его производительность, то добро пожаловать под кат. И, конечно же, самое вкусное, связанное с оптимизациями на базе работы JIT — в конце. Итоговую версию решения тестового можно посмотреть на гитхабе по ссылке.