Главная » Архив меток: Проектирование и рефакторинг

Архив меток: Проектирование и рефакторинг

[Перевод] Технический долг как тетрис

Выигрыш невозможен. Вы только решаете, насколько быстро проиграть Какой следующий ход? Помню, как сыграл в первый раз на Nintendo Game Boy моего друга. Многим нравится тетрис, мне тоже. Тетрис не только одна из лучших игр всех времён, но и отличная аналогия для технического долга. Возможно, у вас в голове тоже застряла та мелодия. Она даёт общее понимание технического долга и ...

Читать далее »

[Перевод] Как сделать код-ревью быстрее и эффективнее

Вы отправляете пул-реквест, получаете обратную связь, вносите исправления, отправляете фиксы на повторный ревью, затем получаете одобрение, и происходит мерж. Как обычно происходит код-ревью? Звучит просто, но на деле процесс ревью бывает очень трудоемким. Ревьюер должен потратить немало времени, чтобы полностью прочитать код и понять предлагаемые изменения. Представьте, что у вас есть пул-реквест с сотнями строк изменений. И велики шансы, что ...

Читать далее »

[Из песочницы] Чистая архитектура. Часть I — Введение

Это вольный и очень краткий пересказ новой книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году. Вступительное слово Программная архитектура немного напоминает строительную архитектуру. В зданиях тоже есть фрактальная структура: здания состоят из отсеков, отсеки состоят из комнат, комнаты — из стен, стены — из кирпичей. Программы же состоят из модулей, которые состоят из пакетов, которые состоят из ...

Читать далее »

Пишем гибкий код, используя SOLID

Информация из статьи будет полезна как новичкам, так и программистам с опытом. От переводчика: опубликовали для вас статью Северина Переса об использовании принципов SOLID в программировании. Они дают возможность программисту писать чистый, хорошо структурированный и легко обслуживаемый код. Если вы занимаетесь разработкой, то, скорее всего, слышали о принципах SOLID. У разных специалистов — разные идеи и понимание «правильного пути», все ...

Читать далее »

[Перевод] Гниение программного обеспечения

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

Читать далее »

[Перевод] Разновидности SIMD

Во время разработки meshoptimizer частенько возникает вопрос: «А может этому алгоритму использовать SIMD?» К сожалению, SIMD может сделать код менее переносимым и менее ремонтопригодным. Библиотека ориентирована на производительность, но SIMD не всегда обеспечивает значительные преимущества по скорости. Когда первостепенное значение имеет производительность, приходится разрабатывать и поддерживать отдельные реализации SIMD для наборов инструкций SSE и NEON. Поэтому в каждом конкретном случае ...

Читать далее »

[Перевод] Шесть историй, как код переписали с нуля

Новый взгляд на извечный вопрос: следует ли переписывать приложение с нуля или это «самая худшая стратегическая ошибка, которую может сделать разработчик программного обеспечения»? Оказывается, при работе со зрелой кодовой базой есть более двух вариантов ответа. «Исходный код словно заржавел!» — Джоэл Спольски Почти два десятилетия назад Джоэл Спольски устроил разнос Netscape за то, что она переписала кодовую базу браузера, в своём ...

Читать далее »

[Перевод] ООП мертво, да здравствует ООП

Этот пост возник благодаря недавней публикации Араса Пранцкевичуса о докладе, предназначенном для программистов-джуниоров. В нём рассказывается о том, как адаптироваться к новым ECS-архитектурам. Арас следует привычной схеме (объяснения ниже): показывает примеры ужасного ООП-кода, а затем демонстрирует, что отличным альтернативным решением является реляционная модель (но называет её «ECS», а не реляционной). Я ни в коем случае не критикую Араса — я ...

Читать далее »

Новый взгляд на изучение и документирование исходного кода

TL;DR Привет. Меня зовут Богдан и я изучаю проблемы чтения кода. Я только что закочнил первую рабочую версию «codecrumbs» — визуального инструмента для изучения исходного кода с помощью «хлебных крошек». Гитхаб репозиторий можно посмотреть тут. Проблема Недавно я проводил опрос о главных проблемах с которыми мы сталкиваемся когда начинаем изучать исходный код большого проекта (если вы ещё не участвовали, то ...

Читать далее »

Размыкаем замыкания и внедряем Dependency Injection в JavaScript

Бонусом идет 100% юнит-тест coverage. В этой статье мы рассмотрим, как писать чистый, легко тестируемый код в функциональном стиле, используя паттерн программирования Dependency Injection. Автор статьи будет иметь в виду именно такое трактование нижеупомянутых терминов, понимая, что это не есть истина в последней инстанции, и что возможны другие толкования. Dependency InjectionЭто паттерн программирования, который предполагает, что внешние зависимости для функций ...

Читать далее »