Рубрика «рефакторинг»
Итак, вы унаследовали старую кодовую базу на C++. Что дальше?
2024-03-06 в 13:00, admin, рубрики: ci, continuous integration, legacy-код, ruvds_перевод, анализ кода, легаси код, рефакторинг, санитайзерыВы жили своей обычной жизнью, но внезапно, всё поменялось. Возможно, вы устроились в новое место, сменили команду или из вашей компании ушёл сотрудник.
Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.
Но баги всё равно как-то нужно устранять, а ещё добавлять новые фичи. То есть вам нельзя просто закрыть на неё глаза или что ещё лучше, взорвать её динамитом. Она важна для компании. По крайней мере, для тех, кто платит вам зарплату. А значит, важна для вас.
И что делать теперь?
Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.
В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
Читать полностью »
Становится ли ПО хуже?
2024-01-03 в 13:00, admin, рубрики: ruvds_переводы, качество кода, оптимизации, производительность приложений, рефакторингНедавно я наткнулся на пост Никиты Прокопова Software disenchantment. Он заставил меня вспомнить пост Мацея Цегловски The Website Obesity Crisis и множество других статей подобного типа. Среди людей, пишущих о разработке ПО, возникает всё более широкий консенсус о том, что приложения становятся больше, медленнее и забагованнее. И это в эпоху, когда оборудование должно позволить нам писать быстрее, меньше и надёжнее. DOOM, вышедший в 1996 году, можно запустить в тесте на беременность и на сотне других неожиданных устройств. Тем временем, современные чат-приложения, работая в фоновом режиме, занимают полгигабайта ОЗУ (или больше), а иногда полностью зависают даже на самом мощном ПО.
Вышеупомянутые посты по этой теме состоят примерно на 80% из справедливой и разумной критики, а на 20% из оторванного от реальности ворчания.
Большинство разработчиков понимает, что глупо спрашивать «это ОС для смартфонов, что в ней может быть сложного?» или «моё приложение для работы с электронными таблицами в 90-х занимало 10 килобайт, тогда почему Factorio весит целый гигабайт?» Если вы не присутствовали при разработке, то не сможете оценить все её проблемы и сложности.
Но это не значит, что для объективной критики нет места. Приложения действительно медленнее, чем были раньше. И экспоненциально больше, хотя степень их полезности не растёт с той же скоростью. По крайней мере, почти в каждом современном приложении есть возможности для оптимизации. Мы можем сделать их быстрее, вероятно, даже на порядки величин. Мы можем удалить код. Мы можем писать крошечные специализированные библиотеки. Мы можем находить новые способы сжимать ресурсы.
Почему же мы этого не делаем?Читать полностью »
Мнение три года спустя: стоил ли того переход с JavaScript на Rust?
2023-10-27 в 13:14, admin, рубрики: javascript, Rust, отладка, рефакторинг, тестированиеНесколько лет назад я отказался от всего и полностью сосредоточился на WebAssembly. В то время Rust имел наилучшую поддержку компиляции в WebAssembly, а самые полнофункциональные среды исполнения WebAssembly были основаны на Rust. Rust был лучшим из вариантов. С места в карьер я нетерпеливо начал разбираться, чем же вызван такой ажиотаж.
С тех пор мы с ещё несколькими потрясающими разработчиками создали Читать полностью »
Как мы планировали повысить версию PHP за месяц, а потратили на это год
2023-08-24 в 7:01, admin, рубрики: perf, php, phpunit, rector, strace, symfony framework, монолит, рефакторингКак и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. Все сервисы написаны на C++ с использованием фреймворка userverЧитать полностью »
Борьба за человекочитаемость кода: опыт Хабра
2023-02-10 в 12:42, admin, рубрики: Блог компании Хабр, код, Программирование, Проектирование и рефакторинг, рефакторинг, Совершенный код, хабр, чистый кодИдеей о том, что нужно писать человекочитаемый код, уже никому Америку не откроешь. О том, как это стратегически важно для бизнеса и почему так полезно для разработчиков, написано много. Все, плюс-минус, это понимают, но контексты бывают разные, и каждый по-своему переносит это в свой опыт.
Эволюция кода: путь к лучшему дизайну
2023-01-13 в 13:00, admin, рубрики: Go, ruvds_перевод, Блог компании RUVDS.com, Программирование, Проектирование и рефакторинг, рефакторинг, экзаменВ этой статье мы изучим программное решение экзаменационной задачи конца второго семестра в AltSchool Africa. Эта задача подразумевает построение системы для управления складскими запасами магазина, продающего машины и другие товары. В частности, магазин должен иметь возможность отслеживать количество и общую стоимость проданных и оставшихся на складе товаров.Читать полностью »
Как портят софт ради обратной совместимости
2022-11-15 в 9:00, admin, рубрики: Assessment and Deployment Kit, Compatibility Administrator, linux, ruvds_статьи, SimCity, software lifecycle, Windows 95, Windows ADK, Блог компании RUVDS.com, легаси, обратная совместимость, преждевременная оптимизация, Программирование, Проектирование и рефакторинг, рефакторинг, Софт, технический долг«Ожирение софта» — известная беда современной разработки. Повышение производительности железа зачастую воспринимается менеджерами как возможность игнорировать рефакторинг, всё равно никто не заметит тормозов. Проще докупить железа, чем тратить время на оптимизацию.
Но есть ещё одна серьёзная причина, по которой ожирение софта и тормоза увеличиваются с каждой версией — это легаси. Накопление старого балласта ради сохранения обратной совместимости. Хуже того, иногда происходят поистине вопиющие случаи, когда баги умышленно вводят в кодовую базу, чтобы сохранить совместимость со старыми программами.
Читать полностью »
Небанальные правила чистого Python. Часть 1
2022-10-31 в 10:19, admin, рубрики: docstrings, doctest, python, python3, type hinting, магические методы, нижнее подчеркивание, приватные методы, Проектирование и рефакторинг, рефакторинг, чистый кодБольшинство питонистов не раз слышали о таких правилах как «функции должны быть глаголами» или «не наследуйтесь явно от object в Python 3». В этой статье мы рассмотрим не такие банальные, но полезные правила чистого кода в Python.