Как стать автором
Обновить
5.11
Рейтинг

Совершенный код *

Как Макконнелл завещал

Сначала показывать
Порог рейтинга

Приглашаем на онлайновый митап про системы сборки С++ кодовой базы

Блог компании «Лаборатория Касперского» Программирование *Совершенный код *Отладка *
В четверг, 28 апреля, в 16 часов (МСК) мы проведем онлайновый митап под названием «Kaspersky Tech: Из CMake в Bazel. Переход для большой кодовой базы С++». Наши C++-разработчики из команд Engineering Productivity, которые используют системы сборки плюсового кода CMake и Bazel и переводят большие проекты с одной на другую, расскажут о своем опыте и проблемах, с которыми им довелось столкнуться.



Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 901
Комментарии 0

Новости

Баги в Hello World

Python *Программирование *Совершенный код *C *
Перевод

Hello World, должно быть, самая часто создаваемая компьютерная программа. Уже десятилетия это первая программа, которую пишут люди, когда начинают изучение нового языка программирования.

Конечно же эта простая программа не должна иметь баги. Верно?

Читать далее
Всего голосов 31: ↑25 и ↓6 +19
Просмотры 7.9K
Комментарии 20

Scala: Гексагональная архитектура и DDD на Free Monad в функциональном программировании

Совершенный код *Проектирование и рефакторинг *Scala *Функциональное программирование *

Привет Хабр! Пятничного тру ФП хардкора с Free Monad, Таглес Финал, Монад трансформерами, Refined Types, Smart Constructors и прочим таким вам в ленту. Хардкор сам себя в ленту не принесет так что погнали.

Гексагональная архитектура делит наш код на три основные части.

1) Primary Adapters,

2) Secondary Adapter

3) Logic aka Domain.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 2.1K
Комментарии 1

Mapper Contexts и Supercontexts: Разделение domain-specific и domain-generic ограниченных контекстов

Программирование *Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *Управление разработкой *
Перевод

Эта статья является переводом материала «Mapper Contexts & Supercontexts: Decoupling Domain-Specific and Domain-Generic Bounded Contexts».

Вы создаете новую систему, и два члена вашей команды предлагают альтернативные архитектуры для отправки уведомлений. Какая из них правильная?

Первый разработчик предлагает модель push: ограниченный контекст должен дать указание Notifications отправить уведомление. Notifications должен просто подчиняться командам и отправлять указанные уведомления.

Второму разработчику не нравится модель push-уведомлений, и он предлагает решение на основе хореографии: когда ограниченные контексты создают события, Notifications должен подписаться на эти события и определять, когда отправлять уведомление.

Как бы вы спроектировали решение? Что еще более важно, как бы вы приняли это решение в команде? Как вы будете разрабатывать наиболее эффективную архитектуру, которая поддерживает краткосрочные цели и долгосрочное развитие?

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.6K
Комментарии 1

Способы переписать логические параметры в С++

Блог компании SkillFactory Программирование *Совершенный код *C++ *IT-стандарты *
Перевод

Программисты читают код намного чаще, чем пишут его, поэтому важно писать понятный, последовательный, однозначный код. Автор книги С++17 in detail написал о способах избегать путаницы. Делимся его материалом к старту курса по разработке на С++.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Просмотры 6.9K
Комментарии 35

Почему я начал использовать аннотации типов в Python – и вам тоже советую

Блог компании Издательский дом «Питер» Python *Программирование *Совершенный код *ООП *
Перевод

С появлением подсказок типов (type hints) в Python 3.5+ добавилась опциональная статическая типизация – поэтому эти подсказки так мне нравятся. Теперь я аннотирую ими все мои проекты.

Читать далее
Всего голосов 34: ↑33 и ↓1 +32
Просмотры 14K
Комментарии 25

Нет такого понятия — чистый код

Программирование *Совершенный код *Терминология IT Управление продуктом *
Из песочницы
Перевод

Кажется, все сейчас стремятся к «чистому» коду. Нет почти ни одной статьи в блогах, где автор не скажет о том, насколько «чист» его подход. Команды собираются обсудить, какое из возможных решений самое чистое. Разработчики вокруг заверяют, что практикуют «чистый код».

Тем не менее, я осознал: нет такого понятия — чистый код.

Читать далее
Всего голосов 44: ↑36 и ↓8 +28
Просмотры 13K
Комментарии 29

О чем вам не расскажут на курсах по Реакту. Вредные советы, как стать незаменимым разработчиком

JavaScript *Программирование *Совершенный код *ReactJS *

Если ваша задача — не просто научиться писать код, а понять, как стать тем, без кого поддержка и развитие проекта просто немыслимы, то этот текст для вас. Заодно поговорим о том, как помочь коллегам постичь дзен и досконально изучить структуру разрабатываемого приложения.

Всем привет, меня зовут Макс Кравец, я CEO IT-компании Holyweb, и сегодня хочу поделиться вредными советами о том, как стать незаменимым React-разработчиком. Поехали!

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 13K
Комментарии 10

Статический анализ и уже выросший проект: внедрять нельзя откладывать

Блог компании Rusprofile PHP *Совершенный код *

Зачем нужен статический анализ кода, кажется, никому объяснять сегодня уже не нужно. Но одно дело — поддерживать код «чистым» с первого коммита, и совсем другое — встраивать новый инструмент в проект, который за несколько лет успел разрастись и пережить несколько итераций глобального рефакторинга. Мы работаем с большим количеством плохо документированных источников данных, а статический анализ кода помогает учитывать самые разные граничные случаи.

И ещё один момент: Rusprofile почти целиком написан на PHP, языке со слабой динамической типизацией. Статический анализ кода на PHP уже несколько лет набирает популярность, сказывается здесь и движение самого языка в сторону более строгой типизации. Но мы опасались, что без предварительной подготовки кода пользы от него мало. Аннотировать типами весь код в реальных бизнес-условиях тоже нереально. Сильно медлить с внедрением в рабочий процесс тоже нельзя: чем дальше, тем сложнее что-то кардинально улучшать. Поэтому нужно было оперативно запускаться, чем-то пожертвовав.

Что нам пришлось преодолеть?
Всего голосов 32: ↑32 и ↓0 +32
Просмотры 5.1K
Комментарии 9

5% из 666 репозиториев Python содержат ошибки из-за запятых (в том числе Tensorflow, PyTorch, Sentry и V8)

Блог компании QIWI Python *Программирование *Совершенный код *TensorFlow *
Перевод
Мы выяснили, что в 5% из 666 исследованных нами репозиториев Python с открытым исходным кодом на GitHub есть три бага, вызванных ошибочным использованием запятых.

Слишком мало запятых


Случайно пропущенная запятая в строке списка/кортежа/множества, приводящая к ненужной конкатенации строк.

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры 5.1K
Комментарии 7
Когда заходит речь о модных и передовых технологиях, ритейл, особенно строительный, — последнее место, где их станут искать. Ну что там может быть интересного: сайт на битриксе и мобильное приложение с программой лояльности? И в каких-то случаях этот стереотип не врёт, но «Леруа Мерлен» — совсем другая история. Наша IT-инфраструктура мощна, как лапищи мемного волка, а команда разработки столь же хороша.

Но технологии — это благо и боль в одном флаконе, прямо как супергеройские способности. В этом посте пять наших специалистов самого разного профиля — от фронтенд-разработчика до технического архитектора — расскажут, чем хороши их любимые инструменты, а в каких случаях надо не забывать страдать.
Читать далее
Всего голосов 30: ↑26 и ↓4 +22
Просмотры 24K
Комментарии 43

Как мы избавились от 80% своего кода, повысив скорость разработки и уменьшив количество ошибок

Блог компании М.Видео-Эльдорадо Совершенный код *Серверная оптимизация *Управление разработкой *
Перевод


Оптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео-Эльдорадо. Тем любопытней изучить опыт коллег за рубежом. Предлагаем вашему вниманию очередной пост на тему: «А как там у них».
Читать дальше →
Всего голосов 98: ↑90 и ↓8 +82
Просмотры 58K
Комментарии 101

Best practices в Code Review

Программирование *Совершенный код *Проектирование и рефакторинг *Отладка *
Из песочницы

Правильный процесс ревью кода — это процесс итеративного улучшения продукты и контроля.
Контроля того, что:
1) Cоблюдены общие правила и договорённости
2) Решение не избыточное и масштабируемое.
3) Решение покрывает все критерии приемки указанные в описании к задаче

Для начала будет хорошо задать в своей команды такие вопросы:
1) Сколько времени занимает ревью кода для средней (сферической в вакууме) задачи
2) Как вы минимизируете время ревью?
3) Как вы определяете, что ревью конкретной задачи сделано правильно?

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 8.1K
Комментарии 18

Вёрстка в 2022. Часть 2: Практика

Разработка веб-сайтов *CSS *JavaScript *Совершенный код *
Перевод
Tutorial

Ситуация получилась следующая.
Компания переделывала сайт и сказал, что необходимо сделать его максимально гибким, чтобы, во-первых, можно было дизайн обновлять просто, во-вторых, сделать ещё несколько подразделов на базе готового функционала (вроде как SaaS фишка для заказчиков).

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 12K
Комментарии 14

Вёрстка в 2022. Часть 1: Теория

Разработка веб-сайтов *CSS *JavaScript *Совершенный код *
Перевод
Tutorial

"Разработчик – это человек, который переводит мысли заказчика на язык машины"
@mikita_du

Идея статьи появилась год назад, думал назвать «Вёрстка в 2021», но как-то затянулось… Весной 2021 года Microsoft объявила, что с 15 июня 2022 года прекращается поддержка IE11 (да, не для всех версий Win 10, но всё же), а значит, к выходу статьи уже останется менее полугода до знаменательного события, когда не придётся верстать под IE.

Для меня же это значит, что можно будет по полной использовать новые стандарты браузеров, в частности – css-variables, grid layout.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 23K
Комментарии 22

Код-ревью в Слёрм

Блог компании Southbridge Программирование *Совершенный код *Управление разработкой *Учебный процесс в IT

В то время как космические корабли бороздят просторы вселенной, а для разработчика код-ревью – обыденное явление, системные администраторы, инженеры эксплуатации и даже прокачанные DevOps-инженеры чуть ли не впервые с этим сталкиваются, будучи уже опытными специалистами. 

В этом году команда Слёрма внедрила код-ревью практических заданий на курсе «Python для инженеров», чему и посвящён материал: кто делает ревью, какие наши принципы, а также как это сравнить с настоящим код-ревью на работе и кто может помочь инженеру.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 1.8K
Комментарии 0

Как напечатать float

Блог компании Конференции Олега Бунина (Онтико) Блог компании Авито Совершенный код *Тестирование веб-сервисов *Тестирование мобильных приложений *

Казалось бы, совершенно непонятно, зачем живым людям в 2021 году решать задачу под названием «печатаем обычное вещественное число». Вроде бы это должно быть уже решено — причём примерно в тот момент, когда эти вещественные числа изобрели. Но оказывается, что нет. 

Привет, меня зовут Андрей, я занимаюсь инфраструктурой поиска в Авито и сегодня расскажу, зачем это вообще нужно — печатать вещественные числа. Какие есть методы (один) решения этой боевой задачи и как это получилось у нас в проекте, в рамках наших очень странных требований. А также, зачем таки подобное, хм, умеренно эзотерическое знание, может когда-то понадобиться и вам. На каком бы вы языке не писали. Read on!

Читать далее
Всего голосов 45: ↑44 и ↓1 +43
Просмотры 12K
Комментарии 23

Создаем нативный образ при помощи Spring Boot

Блог компании Издательский дом «Питер» Программирование *Java *Совершенный код *Kotlin *
Перевод

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

Бессерверные вычисления – это модель выполнения вычислений в облаке, при которой облачный провайдер предоставляет машинные ресурсы по требованию и берет на себя всю работу с серверами, на что его уполномочивает клиент. При бессерверных вычислениях ресурсы не содержатся в энергозависимой памяти; напротив, вычисления выполняются краткими всплесками, после которых результаты сбрасываются в долговременное хранилище. Когда приложение не используется, никаких ресурсов на него не выделяется.

По Википедии

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 4.4K
Комментарии 0

Код ревью с учётом человеческих слабостей

Блог компании Delivery Club Tech Совершенный код *Git *Управление разработкой *Карьера в IT-индустрии

Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.

Читать далее
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 9.2K
Комментарии 7

Микросервисы: проблемы, которые мы не замечаем

Блог компании Конференции Олега Бунина (Онтико) Высокая производительность *Совершенный код *Управление разработкой *Микросервисы *

Переехать в микросервисы можно двумя способами. Можно построить платформу — это надежно, но очень сложно. Или можно поднять Kubernetes и начать в него коммитить новые сервисы. Переезд проходит быстро и легко, но редко получается то, на что вы рассчитываете. Например, вместо микросервисной структуры вы можете обнаружить распределенный монолит.

Многие при этом не задумываются, правильно ли они пилят микросервисы. Как в синдроме утенка: увиденное самым первым становится единственно верным решением.

Меня зовут Олег Федоткин, я Head of PaaS СберМаркет, мы занимаемся той самой платформой, которая помогает разработчикам лучше, удобнее и быстрее писать микросервисы. Мы стандартизируем всю разработку, стараясь снизить Time to Market для новых фич. Но это всё равно очень сложно. Поэтому сегодня я разберу самые распространенные микросервисные проблемы.

Читать далее
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 13K
Комментарии 5

Вклад авторов