Как стать автором
Обновить

Апгрейдим текстовые протоколы до бинарных и боремся с legacy-кодом на встрече C++ User Group

Время на прочтение 2 мин
Количество просмотров 3.4K
Блог компании «Лаборатория Касперского» C++ *
Приглашаем вас на очередную встречу C++ User Group, которая пройдет 28 июня в рамках нашей event-платформы CoLaboratory. В прошлый раз мы обсуждали перформанс и Clang Static Analyser. Теперь поговорим о наболевшем: как избавиться от legacy-кода? Как избежать его образования в дальнейшем? Какие сложности возникают при апгрейде протокола взаимодействия, и как с ними справиться?
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 1

Архитектура как бремя

Время на прочтение 10 мин
Количество просмотров 7.3K
Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *ERP-системы *Управление проектами *
Перевод

За время своей карьеры я поработал с разными legacy-проектами, каждый из которых страдал от тех или иных изъянов.


Разумеется, часто главной проблемой было низкое качество программного обеспечения (отсутствие модульных тестов, отказ от использования принципов чистого кода…), но были также и трудности, чьим источником являлись архитектурные решения, принятые в начале работы над проектом или даже в период зарождения корпоративной системы. На мой взгляд, этот класс проблем является причиной наибольшей боли для многих проектов.


В сущности, улучшение кода — дело довольно простое, особенно сейчас, когда движение за мастерство разработки ПО (software craftsmanship) продвигает хорошие практики в командах. Однако изменение стержневых частей систем, ограничений, введенных в самом начале их жизненного цикла, является чрезвычайно сложной задачей.


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


Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 35

ASH Viewer: перезагрузка

Время на прочтение 6 мин
Количество просмотров 7.5K
Блог компании Инфосистемы Джет Open source *Oracle *PostgreSQL *Java *
Что делать, если надо работать с данными, которые по объему еще не Big data, но уже больше того, что умещается в памяти компьютера и для которых достаточно возможностей Excel? Для любителей велосипедостроения ответ очевиден – нужно писать что-то свое (да, мы не ищем легких путей).

Но как быть, если код, написанный тобой в прошлом, ужасен и не дает тебе возможности развивать проект? Отставить в сторонку старые наработки, дать дорогу новому, вечному и светлому (да-да, и тут тоже без вариантов).



Цитата из кф Матрица: “Достаточно одной таблетки, Нео”. Режиссер: братья и сестры Вачовски. 1999. США
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 9

Как писать меньше кода и получать больше толку

Время на прочтение 6 мин
Количество просмотров 13K
Блог компании Productivity Inside Программирование *Совершенный код *
Перевод


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

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

И вдобавок ко всей этой чехарде, код пишется программистами. Чем его больше, тем больше требуется программистов. С увеличением числа программистов растут и затраты на коммуникацию между ними, что еще дополнительно вносит лепту в копилку расходов на разработку и сопровождение кода.
Читать дальше →
Всего голосов 33: ↑26 и ↓7 +19
Комментарии 6

15 февраля Badoo PHP Meetup #4. Легаси

Время на прочтение 3 мин
Количество просмотров 5.8K
Блог компании Badoo Разработка веб-сайтов *PHP *Программирование *Конференции


Привет!

15 февраля, в субботу, приглашаем на очередную встречу сообщества PHP-разработчиков в офисе Badoo. 

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

Мы пообщались с разработчиками крупных компаний и попросили поделиться опытом. На встрече обсудим процессные и автоматические, тактические и стратегические подходы для борьбы с этим неприятным явлением. Будем надеяться, что эта концентрация разных практик и взглядов на легаси упростит кому-то жизнь.

Регистрация по ссылке, обязательная (важно: пишите свои данные кириллицей). Не забудьте дождаться подтверждения участия, оно придет дней за 10 до митапа. 

Первый доклад в 12:00. В программе пять докладов, практически не ограниченное свободное общение за кофе, викторина, розыгрыш билета на PHPRussia, а в качестве afterparty — очередная встреча сообщества BeerPHP Moscow
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 2

Вызов разделяемых библиотек из Simulink

Время на прочтение 13 мин
Количество просмотров 1.8K
Блог компании ЦИТМ Экспонента Программирование *Алгоритмы *C *Matlab *
Перевод
Привет, Хабр!
Представляю вашему вниманию перевод статьи моего коллеги Михаила, посвященной методам вызова разделяемых библиотек в Simulink. Зачем она была создана вообще? Дело в том, что у многих компаний уже есть множество легаси-моделей, которые хотелось бы переиспользовать и нам часто задают вопросы «А как мне легаси интегрировать в Simulink? А если мое легаси в виде DLL?» Поэтому-то и была написана оригинальная статья.
Под катом рассматривается несколько способов по вызову разделяемых библиотек в Simulink.

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

Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Топ-10 книг для разработчика

Время на прочтение 6 мин
Количество просмотров 115K
Программирование *Профессиональная литература *Учебный процесс в IT Читальный зал
Перевод

Совершенствоваться в сфере разработки — это не только писать хороший код, но и читать о том, как его писать.




Привет, хабр! Продолжаю делиться полезными подборками. Совсем недавно я опубликовал 2 поста с перечнем Github репозиториев: Часть1 и Часть2. На этот раз предлагаю вашему вниманию подборку полезных книг для разработчиков. Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 30: ↑26 и ↓4 +22
Комментарии 40

PyTrace — Time Travel Debugger для Python

Время на прочтение 2 мин
Количество просмотров 6.5K
Python *
Мне часто приходится сталкиваться с отладкой.

Иногда я ставлю точку останова, но понимаю что уже слишком поздно, и надо начинать все сначала.

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

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

Возможно ли лучше понимать запутанный код? А что, если мы сможем понимать такой код, быстрее чем тот, кто его написал?

Встречайте,

PyTrace — это трейсер с возможностями Time-Travel Debugging-а

image
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 14

Мёртвый код: найти и обезвредить

Время на прочтение 14 мин
Количество просмотров 25K
Блог компании Badoo Разработка веб-сайтов *PHP *Программирование *Проектирование и рефакторинг *


Меня зовут Данил Мухаметзянов, я работаю бэкенд-разработчиком в Badoo уже семь лет. За это время я успел создать и изменить большое количество кода. Настолько большое, что в один прекрасный день ко мне подошёл руководитель и сказал: «Квота закончилась. Чтобы что-то добавить, нужно что-то удалить».

Ладно, это всего лишь шутка — он такого не говорил. А жаль! В Badoo за всё время существования компании накопилось больше 5,5 млн строк логического бизнес-кода без учёта пустых строк и закрывающих скобок.

Само количество не так страшно: он лежит, есть не просит. Но два-три года назад я начал замечать, что всё чаще читаю и пытаюсь разобраться в коде, который на самом деле не работает в продакшен-окружении. То есть, по сути, мёртв.

Эту тенденцию заметил не только я. В Badoo поняли: наши высокооплачиваемые инженеры постоянно тратят время на мёртвый код.
Всего голосов 67: ↑67 и ↓0 +67
Комментарии 28

Как заставить руководство проникнуться техническим долгом

Время на прочтение 5 мин
Количество просмотров 4.5K
Блог компании Productivity Inside Проектирование и рефакторинг *Управление продуктом *
Перевод

«Руководство не даёт мне заняться рефакторингом legacy-кода!» Знакомая ситуация? Раздражает жутко. Большинство разработчиков рано или поздно сталкивается лбами с менеджером, который совершенно не заинтересован в том, чтобы совершенствовать уже готовое. То нужно реализовать что-то новое, то срочно потушить пожар, то исправить какой-то баг… В общем, причина отложить рефакторинг запущенной кодовой базы у них всегда найдётся.

И даже когда пытаешься им объяснять, какие преимущества даёт опрятный код, они то ли не понимают, то ли не хотят понимать. У них только затраты и сроки на уме, а до качества никому нет дела. И получается, что вы абсолютно бессильны что-то сделать с техническим долгом, который всё копится и копится. Программисты работают на прод, а прод – на запросы нетерпеливых пользователей. За рефакторинг никто платить не будет. Положение выглядит безнадёжным.

Попадая в такую ситуацию, многие толковые разработчики просто пакуют вещи и уходят из компании. И очень скоро из-за текучки в отделе уже двери не закрываются: одни уходят, другие приходят…
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 14

COBOL — древний код, который управляет вашими деньгами

Время на прочтение 19 мин
Количество просмотров 73K
Cobol *История IT Финансы в IT
Перевод
image

Язык программирования COBOL старше Игоря Николаева. Люди, умеющие им пользоваться, часто того же возраста. Он лежит в основе целой финансовой системы и его нельзя оттуда убрать. Мы расскажем о том, как компьютерный язык управляет финансовой жизнью мира.

Когда Томас начинал программировать, на дворе стоял 1969 год. Он был обычным парнем, только что выпустившимся из старшей школы в Торонто, не имея особых целей в жизни. Его отец был плотником, но в двери его семьи постучалась удача: оказалось, что руки у Томаса растут не из того места. «Мой отец знал, что я даже не смогу приколотить одну доску к другой», — смеётся он.

Поэтому его мать предложила нечто странное и новомодное: как насчёт… программирования компьютеров?

В 1969 году компьютеры всё ещё были странными новыми диковинками размером с большой шкаф. Но по всему миру компании начали понимать, что эти устройства бесценны для всех задач, требующих мгновенных бухгалтерских расчётов, например, подсчёта зарплат. Вакансии предлагались любому, кто хотя бы немного умел кодить. Поэтому Томас нашёл «небольшую школу-однодневку» в деловом центре Торонто и за следующие два месяца изучил самый популярный на то время компьютерный язык: COBOL (Common Business-Oriented Language).
Читать дальше →
Всего голосов 33: ↑29 и ↓4 +25
Комментарии 63

Как легко и просто модернизировать код на C++

Время на прочтение 6 мин
Количество просмотров 5.5K
Блог компании Издательский дом «Питер» Программирование *C++ *Проектирование и рефакторинг *
Перевод
Привет, Хабр!

Предлагаем вашему вниманию перевод короткой практичной статьи по борьбе с избыточным legacy в коде на C++. Надеемся, будет интересно.
Читать дальше →
Всего голосов 16: ↑11 и ↓5 +6
Комментарии 12

Кровавое легаси: как в одиночку раздробить монолитный сервис и не сойти с ума

Время на прочтение 9 мин
Количество просмотров 8.3K
Блог компании Pixonic Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *

Было раннее утро понедельника. Я проснулся раньше времени из-за грохота грома за окном. Подойдя к окну, я увидел, как по небу плыли свинцовые тучи, безжалостно заливая дождем все вокруг. Казалось, что еще чуть-чуть — и наступит второй всемирный потоп. Как будто Вселенная всеми способами пыталась мне намекнуть, что надвигается что-то ужасное, но я даже не представлял, что меня ждет.

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

Лифта рано утром, как всегда, было не дождаться, и я отправился на четвертый этаж по лестнице, любуясь местными красотами и оставляя за собой мокрый шлейф на полу. Я оказался в офисе первым и чувствовал себя королем мира. Сделав себе чай и расположившись в кресле, я принялся доделывать очередную фичу. Казалось, что настали покой и умиротворение.

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

В воздухе чувствовалось нарастающее напряжение. Руководитель заговорил, и я почувствовал себя, словно на гильотине. 

Произошло действительно страшное: мне предстояло путешествие по удивительному миру legacy-кода в старом корпоративном сервисе.

Читать далее
Всего голосов 33: ↑28 и ↓5 +23
Комментарии 12

Это кто понаписал?

Время на прочтение 4 мин
Количество просмотров 7.7K
Блог компании Productivity Inside Совершенный код *Управление разработкой *
Перевод
Технический директор и разработчик вместе изучают legacy-код в попытках исправить баг. Мучениям нет конца, и они уже готовы сдаться. «Да кто вообще понаписал эту хрень?» — спрашивает технический директор. В раздрае чувств он смотрит в git blame. Оказывается, это он и понаписал.

Встречайте нашего главного героя – Джейка. Он разработчик, недавно принятый в компанию, на проект, которому идет седьмой год. В процессе онбординга Джейку поручили устранить баг, и для этого ему пришлось закопаться в глубины legacy-кода. Вооружившись всеми своими знаниями и пониманием контекста, он сделал шаг в бездну. Всё должно было быть просто. В конце концов, это задача для новичка. Что такого может случиться? (где-то здесь прозвучал циничный смех)
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 12

Боремся с 16-летним легаси-кодом, или исправляем C и C++ front-end в PVS-Studio

Время на прочтение 8 мин
Количество просмотров 3.1K
Блог компании PVS-Studio C++ *

В 2022 году статическому анализатору PVS-Studio для языков C и C++ исполняется 16 лет. Если бы анализатор был человеком, то он бы уже заканчивал школу. Это очень старый проект, и система типов в нем не потерпела кардинальных изменений практически с самого начала. В этой статье мы посмотрим, как работал анализатор всё это время и расскажем, что было не так, и как мы начали это исправлять.

Читать далее
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 0